C语言 指针的理解总结
- 指针——我认为指针就是地址的另外一种叫法,在以下定义中【变量的指针和变量的地址】,这个两个定义没有区别。
- 指针变量——顾名思义,指针变量就是存储指针的变量(也可以说是存储地址的变量)。
-
指针变量的定义方法——定义指针变量需要两步,第一,声明指针变量内存储的数据类型;第二,声明指针变量名。例如,int * a,定义了一个存储整型数据的指针变量,其中的星号(*)表示定义的变量类型是指针变量。
- 如何通过指针变量获取该地址所存储的值——间接运算符星号(*)【和定义指针变量用到的符号是一样的】。例如,想要获取上述定义的指针变量所指向的具体值,可以通过val=* a,这样val指向的就是指针变量a所对应的真实值。
- 指针和数组的关系——数组名是数组首元素的地址
1 int main(){ 2 int a=1,b=2; 3 int*p =&a; 4 printf("%p,%p\n",&a,p);/*输出的都是变量a的地址*/ 5 *p=6; 6 printf("%d%d\n",a,*p); 7 b =*p+2;printf("%d%d%d",a,*p,b); 8 }
1 #include <stdio.h> 2 int main)(){ 3 int arr[]={2,3,4,5,6},b = 2; 4 int*p = arr;/*等价于int*p =&(arr[0]),数组名就是数组第一个元素的地址*/ 5 6 printf("%p\t%p\t%p\n",arr,&(arr[0]),p);| 7 printf("%d\t%d\n",*p,arr[0]); 8 printf("%d\t%d\n",*(p+2),arr[2]); 9 printf("%d\t%d\n",p[2],arr[2]); 10 printf("%d\t%d\n",p[2],*(arr+2)); 11 }

浙公网安备 33010602011771号