IOS学习之路-- 指针&宏函数
- 如果*p被()包住,说明指针变量p将来指向的是函数
//声明一个指针变量
//int (*p)(int, int) = sum;
int (*p)(int, int);
p = sum; // 如果*p被()包住,说明指针变量p将来指向的是函数 // 最左边的void说明p指向的函数没有返回值
// 最右边的()说明p指向的函数没有形参
void (*p)(); // 函数名test就是test函数的地址
// 将test函数的地址赋值给了指针变量p
// 指针变量p成功指向了test函数
p = test; // 利用指针变量p间接调用了test函数
//(*p)(); //test();
p();
- 结构体占用的空间大小
默认情况下,一个结构体变量所占有的存储空间是所有成员的总和。
sizeof计算的结构体所占用存储空间时,返回的值必须是最大成员的倍数。
- 结构体的省略写法
省略了结构体的名称,这种方法没有重用性。
在结构图的最后加入的内容是 同时定义的变量。
struct
{
double width;
double height;
} s;
注意: 如果想给结构体使用{}的方式一次性赋值,只能在定义变量的同事进行。
- 结构体作为函数参数时,只是成员的值传递(修改函数内部的结构体,并不影响外面的结构体)
struct Person {
int age;
};
// 这种方式是值传递, 不会真的改变nochange的值
void changePersonWithAge1(struct Person nochange) {
nochange.age = ;
}
// 这种传递的是指针,指针指向同一个内容,可以真正改变
void changePersonWithAge2(struct Person *change) {
// (*change).age = 100;
change->age = ; // 等价于上面那行。
}
int main()
{
struct Person p1 = {};
// changePersonWithAge1(p1);
changePersonWithAge2(&p1); // 引用传递,要传递指针
printf("%d\n", p1.age);
}
- 宏定义:
#define 宏名 值
#undef 宏名
作用:宏替换,在翻译之前,将代码中的所有宏名都替换成对应的值。
宏名最好都用大写,跟函数区分开。可以使用在任何地方(代码段中,头部,任何地方)
// 带参数的宏定义
// 宏替换只是纯粹的文本替换,把左边的宏换成右边的东西,并不会进行任何运算
// 参数和结构都必须用()包住
#define PING_FANG(x) ((x)*(x))
- 预处理指令
不能递归包含: 自己包含自己,a.h include a.h
不能交叉包含:a.h incldue b.h, b.h include a.h
防止.h的文件内容被包含多次。用预处理命令。 文件名用A_H的方式来定义。
#ifndef 文件名
#define 文件名 ..文件内容.. #endif
- typedef 起别名
typedef int Myint
typedef char * String1
struct Person {
int age;
};
// 给结构体类型起个别名 :Stu
typedef struct Person Student;
// 此结构类似与上面的内容。 是上面两行的缩写
typedef struct Dog {
int age
} WangCai;
- 指针的使用范围
需要间接的修改某个变量的值。
IOS学习之路-- 指针&宏函数的更多相关文章
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...
- 浅谈iOS学习之路(转)
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- 浅谈iOS学习之路
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- 纪录我的iOS学习之路
学习资料的网址 田伟宇(Casa Taloyum)有几篇介绍iOS架构的文章,一级棒!原博客链接. iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方 ...
- 我的IOS学习之路(三):手势识别器
在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等.这里做一下总结,详见代码. - (void)viewDidLoad { [super viewDidLo ...
- iOS学习之路十三(动态调整UITableViewCell的高度)
大概你第一眼看来,动态调整高度是一件不容易的事情,而且打算解决它的第一个想法往往是不正确的.在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变,同时又不必子类化UITableVie ...
- ios学习之旅---指针也不难
1.认识指针 #include <stdio.h> //基本数据类型作为函数參数传递是值传递 //void moveFront(int x ,int y) //{ // x = x + 2 ...
- IOS学习之路七(使用 Operation 异步运行任务)
在 application delegate 头文件(.h)中声明一个 operation 队列和两个 invocation operations: #import <UIKit/UIKit.h ...
随机推荐
- CentOS6.5 yum安装 apache+svn安装配置
首页是关于svn的备份和还原 比较快捷的方式: 备份:svnadmin hotcopy /opt/svn/svntest/ /var/tmp/svntest_20120604 --clean-logs ...
- 【jmeter】参数化User Defined Variables与User Parameters
偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近,刚开始时我也没注意,两者有什么不同.使用时却发现两者使用场景有些不同,现在小结一 ...
- LintCode "Copy Books"
Classic DP. The initial intuitive O(k*n^2) solution is like this: class Solution { public: /** * @pa ...
- 剑指offer系列30-----删除链表中重复的节点
[题目]在一个排序的链表中,存在重复的结点, * 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. * 例如,链表1->2->3->3->4->4->5 ...
- bzoj2467: [中山市选2010]生成树
Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角 ...
- android学习笔记46——File存储
File存储--IO操作文件 openFileOutput.openFileInput Context提供了如下两个方法来打开本应用程序的数据文件夹里面的文件IO流. 1.FileInputStrea ...
- QT显示中文的几个问题
最近用QT,需要在界面上显示中文,发现QT无法直接在代码中写中文,只能通过曲线救国的方式,比如用QT语言家,QTextCodec的fromloca8bit 研究了半天,终于明白了一些编码的问题 1.V ...
- Redis内存使用优化与存储(转)
Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...
- [CSS]图片与文字对齐问题
摘自:张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 图片与文字默认是居底对齐了.所以当图片与文字在一起的时候往往都是不对齐的.尤其图片较小时就更加明显了,我看到很多人使 ...
- vim 学习日志(1):剪切,复制,粘贴,删除,撤销
一:光标命令 左h 上j 下k 右l :goto n 表示跳转到文本的第n个字符 :n 表示跳到第n行 nG n为行数,该命令立即使光标跳到指定行:n为空,光标跳到文件最后一行. Ctrl+G ...