sizeof运算符:得到内置类型的大小(sizeof(int)),得到复合类型的大小
(sizeof(结构体,指针,数组))
数组的指针:int(*p)[10]; p是一个指针,指向一个数组对象。
指针的指针:int *p;int**p;
1.指针作为参数传递
函数的调用,实参值拷贝给形参,复制到函数栈帧作为局部变量使用,对参数的修改无法被
调用者看见。————经典swap程序。
利用指针作为参数传递,不改变局部变量(指针副本)的值,而是改变他们指向的内容。可以被
调用者看见。Most important 如果需要改变指针的值,传递的应该是指针的指针。
2.指针类型的意义
指针本质:一个无符号的整型,代表一个内存单元的单元号。
既然是一个整数,是否可以将指针p与整数进行比较?可以,但是需要将整型先转换为指针,
NULL不是一个关键字,而是定义在stdio.h中的宏,#define NULL (void*)0, NULL是一个常数0,
代表0号存储单元。
定义指针通常需要定义其指向的数据的类型。int* or double* or char*
void*型指针指向任意一个类型的内存单元。引用该指针所指向的数据,会发生编译错误。
经典利用 void *p; p=malloc(sizeof(int));p=(int*)p;
函数的指针:int (*p)();
函数指针经典应用———回调函数(泛型算法)
int(*f[10])(int,int)//函数指针数组,f是一个数组,数组里有10个函数指针,指向返回值为int,
参数为int,int的函数。
可以构造函数指针指向这个函数,来进行调用。