C语言 指针的理解总结

  1. 指针——我认为指针就是地址的另外一种叫法,在以下定义中【变量的指针和变量的地址】,这个两个定义没有区别。
  2. 指针变量——顾名思义,指针变量就是存储指针的变量(也可以说是存储地址的变量)。
  3. 指针变量的定义方法——定义指针变量需要两步,第一,声明指针变量内存储的数据类型;第二,声明指针变量名。例如,int * a,定义了一个存储整型数据的指针变量,其中的星号(*)表示定义的变量类型是指针变量。

  4. 如何通过指针变量获取该地址所存储的值——间接运算符星号(*)【和定义指针变量用到的符号是一样的】。例如,想要获取上述定义的指针变量所指向的具体值,可以通过val=* a,这样val指向的就是指针变量a所对应的真实值。
  5. 指针和数组的关系——数组名是数组首元素的地址  
1     int main(){
2     int a=1,b=23     int*p =&a;
4     printf("%p,%p\n",&a,p);/*输出的都是变量a的地址*/
5     *p=66     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[]={23456},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 }

 

posted @ 2020-04-20 15:32  张小同学  阅读(439)  评论(0)    收藏  举报