A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aSmallStone 中级黑马   /  2015-5-16 10:26  /  641 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a=1,b=2,c=3;
int *pa[3]={&a,&b,&c};
我知道pa[0]=&a
pa=&pa[0]
为什么**pa=1

3 个回复

倒序浏览
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[])
  3. {
  4.     int a = 1, b = 2, c = 3;
  5.     int * pa[3] = { &a, &b, &c };

  6.     //        我知道pa[0] = &a; pa = &pa[0]
  7.     //         为什么 ** pa = 1

  8.     // 1. **pa == *(*pa)

  9.     // 2. *pa == pa[0] == &a

  10.     // 3. **pa == *(&a) == a;

  11.     // 4. **pa == a == 1;

  12.     printf("%d\n", *(*pa));
  13.    
  14.     return 0;
  15. }
复制代码

评分

参与人数 1黑马币 +20 收起 理由
aSmallStone + 20 赞一个!

查看全部评分

回复 使用道具 举报
*pa就是取出指针pa所指向的内存中的变量,而 pa=&pa[0],即*pa=&a;同理  *(*pa)取出*pa所指向的内存中的变量,即为1。小的才疏学浅,希望可以帮助你理解
回复 使用道具 举报
我简单说说看你能不能理解,pa = &pa[0], *pa = pa[0] = &a ,*pa = &a , 那**pa = a
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马