标签:
//通常意义上,指针类型指的是‘指针值’的类型,而不是‘指针’的类型 //V推论①:变量的步长只与变量的类型有关 //普通变量名是一段内存空间的标识,普通变量名代表的是一段内存空间, //对于复杂变量(例如指针):通常的指针的步长准确来说是指‘指针值’的步长,而不是指‘指针本身’的步长,指针本身的步长永远是4, //我们通常说的指针类型往往指的是‘指针值’的类型,,而不是‘指针’的类型 //而指针类型就是一个占4个字节大小内存空间的一种类型(从来没有人定义过指针类型,人们定义的都是‘指针值’的类型), //在计算机看来,指针这个类型和int类型没啥区别,都是4个字节大小 //a指针的值是一个数组指针(int (* p)[5]),那么&a的步长就是一个int型有5个元素的数组的大小 //&a这个指针本身和&a的值的区别是:&a这个指针本身指的是占有4个字节大小的内存空间,&a的值指的是一个数组的地址 //V推论②:多级指针是人为为‘指针本身’类型做的一种区分 //例如:int a[5]={0}; 这里 a是指针,a这个‘指针的值’的类型是int *,同时a指针本身是一个一级指针; //&a也是指针 ,&a这个‘指针的值’的类型是int (* )[5],同时&a指针本身是一个二级指针 //二级指针是指针本身类型的一种人为自定类别,但通常意义上指针的类型没有任何关系 //一级指针与二级指针的区别在于,一级指针的值是某种类型的数据的地址,而二级指针的值是一个指针的地址 #include<stdio.h> #include<stdlib.h> void main(){ int a[5] = { 1, 2, 3, 2, 1 }; printf("%x\n", &a); printf("%x\n",&a+1); system("pause"); }
标签:
原文地址:http://www.cnblogs.com/zhanggaofeng/p/5366259.html