变量的地址为指针,存放地址的变量为指针变量。
Sizeof(指针变量)为4,因为存放地址的变量为计算机内部的地址总线宽度即32,但是在64位的计算机系统也是为32,即4个字节. Sizeof(arr)arr为数组名,得到的值为数组的长度。
对于二维数组比如a[3][4],a代表数组元素的地址,现在的首元素不是一个简单的整型元素,而是由4个整型元素所组成的一维数组,因此a代表的是首行(即第0行)的首地址。a+1代表第1行的首地址。a[0]、a[1]、a[2]既然是一维数组名,c语言规定了数组名代表数组首元素地址,因此a[0]代表一维数组a[0]中第0列元素的地址,即&a[0[[0].
Struct aiocb my_aiocb;
Bzero((char *) &my_aiocb,sizeof(structaiocb));
(char *)&my_aiocb是将my_aiocb强制类型转换为字符指针类型。因为指针变为字符指针类型后,那么+1意味着只是往后移动一个字节,这个目的在很多时候会用到的。
Int a ;
(char *) a ,a 原来是一个整型变量,现在这样转换之后就是为字符指针变量,所以变量a里面的内容就变成一个地址了,而且这个地址指向的是一个字符型数据。
Int *a[6],首先[]优先级高点,所以首先它是一个数组,然后与*结合,所以它是指针数组,即这个数组的每个成员都是指针。
几个概念:函数指针,指针数组,数组指针,函数指针数组。
函数指针:指向函数的指针。
数组指针:指向数组的指针。
指针数组:数组的每个成员都是指针。
函数指针数组:数组的每个成员都是指向函数的指针。
int *p;这种型式定义的指针变量是空指针,没有指向任何的内存,所以不能直接使用,一般都说配套malloc()一起使用。 还有另一种说法就是这样定义的指针变量指向的内存是不确定的,有可能指向比较重要的内存,所以最好不要乱操作这个指针指向的内存。