C语言19 指针取值的两种方式

admin 2018年5月13日03:22:56评论598 views字数 688阅读2分17秒阅读模式

一级指针和多级指针

int i =100;  int* p1 = &i;   int** p2 = &p1;   int*** p3 = &p2;   int**** p4 = &p3;   int***** p5 = &p4   int****** p6 = &p5;   int******* p7 = &p6;  int****** px1 = *(p7);  int***** px2 = *(px1);  int**** px3 = *(px2);  int*** px4 = *(px3);  int** px5 = *(px4);  int* px6 = *(px5);  int px7 = *(px6);   int px7 = *(*(*(*(*(*(*(p7))))))); 

*()与[]的互换表示

int* p = (int*)1; printf("%d %d /n",p[0],*p);  //p[0] = *(p+0) = *p    int** p = (int**)1; printf("%d %d /n",p[0][0],**p);   printf("%d %d /n",p[1][2],*(*(p+1)+2));  int*** p = (int***)1; printf("%d %d /n",p[1][2][3],*(*(*(p+1)+2)+3));    同理: *(*(*(*(*(*(*(p7))))))))   = *(*(*(*(*(*(p7+0)+0)+0)+0)+0)+0)  = p7[0][0][0][0][0][0][0] 

总结

*(p+i) = p[i]   *(*(p+i)+k) = p[i][k]   *(*(*(p+i)+k)+m) = p[i][k][m]   *(*(*(*(*(p+i)+k)+m)+w)+t) = p[i][k][m][w][t]   *() 与 []可以相互转换  

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月13日03:22:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   C语言19 指针取值的两种方式https://cn-sec.com/archives/51514.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息