当前位置:   article > 正文

利用下标获取指针的数值_取指针的值

取指针的值

(1)当定义一个指针数据之后 int *p ,通过*p 获取指针指向的数据。

(2)当指针指向一个数组的时候,int *p  ,  int a[3]  ,   p=a ; 因为数组名就是指向数组第一个数值的地址。如下

  1. int main()
  2. {
  3. int *p=NULL;
  4. int a[3]={0,1,2};
  5. p=a;
  6. printf("a[1] is %d\n",a[1]);
  7. printf("p[1] is %d\n",p[1]);
  8. printf("*(p+1) is %d\n",*(p+1));
  9. printf("*(a+1) is %d\n",*(a+1));
  10. return 0;
  11. }
  12. /*输出结果
  13. a[1]=1
  14. p[1]=1
  15. *(p+1)=1
  16. *(a+1)=1
  17. */

实际上系统在编译时,数组元素 a[i] 就是按 *(a+i) 处理的。即首先通过数组名 a 找到数组的首地址,然后首地址再加上i就是元素 a[i] 的地址,然后通过该地址找到该单元中的内容。
所以 a[i] 写成 *(a+i) 的形式,程序的执行效率会更高、速度会更快。因为在执行程序的时候数组是先计算地址,然后转化成指针。而直接写成指针 *(a+i) 的形式就省去了这些重复计算地址的步骤。

(3)当指针指向一个地址的时候,可以通过p[1]这种下标来访问地址存放的数值。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int *p=NULL;
  5. p=malloc(80);
  6. p[0]=1;
  7. p[1]=2;
  8. *(p+1)=3;
  9. printf("p[0]= %d \n",p[0]);
  10. printf("p[1]= %d",p[1]);
  11. free(p);
  12. }
  13. /*
  14. p[0]=1;
  15. p[1]=3;
  16. */

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码架构师/article/detail/63204
推荐阅读
相关标签
  

闽ICP备14008679号