已知有以下的说明int a[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a(3))]的值

问题描述:

已知有以下的说明int a[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a(3))]的值
我大致的想了想是不是这样的 a(0)+a(3)是表示a(4)然后*a(4)这个量 就是5 然后a[5]就是0?是这样的么 (a(0)+a(3))数组还能相加?
1个回答 分类:数学 2014-10-02

问题解答:

我来补答
a[*(a+a(3))] 应该不带这么写的吧...在我这里就编译不通过a(3) 会报错,说没有这样的函数.
我改成这样a[*(a+a[3])]就能输出0了
由内而外分析...首先开个数组,其各个元素的对应的内存是连续的
a是数组的首地址,指向的内存放着8的信息,而a[3]很容易知道是等价于5
即内部是a+5 这时a+5表示的是a指向内存,往后数五个int内存单元,则移到了存放4的内存空间
然后* 引用 *(a+5)就是4
最后a[4]得到0
 
 
展开全文阅读
剩余:2000