请大神帮我理解下这个问题,假设一个二维的数组int a[2][3]={(1,2,3),(4,5,6)}; int(*b)[3]=a; 为什么
可以用*(b+1)+2;来代表第1行第2列的元素地址呢?加*的不是应该是值吗?为什么又变成了地址呢?怎么理解这种*...
可以用*(b+1)+2;来代表第1行第2列的元素地址呢? 加*的不是应该是值吗?为什么又变成了地址呢?怎么理解这种*
展开
2个回答
展开全部
因为a本身就是指针,它指向的是数组的第一个元素的地址,也可以说是这个素组的首地址。这里的b指向的是一个指针,也就是说,这个指针b保存的内容是a这个指针的地址。你说加*应该是值没错,但是这个值是a这个指针的地址,而不是a这个指针对应的地址所保存的值。
你要分清楚定义时*的作用,和单独拿出来时候的作用,定义的时候,比如int *b,这里的*单纯是只是为了让编译器知道,这里定义的b是一个指针。而后面单独拿出来用的*b,则是说b这个指针所指地址保存的内容
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询