1.书上说:第i行第j列元素a[i] [j]地址的表示方法有:a[i]+j,*(a+i)+j,&a[i] [0]+j,&a[i] [j]。第1,3,4种的表示方法我懂,但是第二种*(a+i)+j的表示方法我就不明白了。*(a+i)不是代表一个值吗?怎么后面还可以加上j来用作指针?两个不是一个概念呀。
2.若string表示一个字符数组或一个字符指针,则可以用:printf("%s\n'',string);表输出字符串的内容。但是string要是一个字符指针的话,那么它存放的不是字符串的首地址吗?输出的也应该是字符串的首地址,怎么能输出字符串呢?
能就第二种具体说明一下吗例如*(a+0)+3表示数组元素a[0] [3] ,那么(a+0)表示的是第0行的首地址*(a+0)表示第0行第一列的值,那他再加个3就是第一个元素的值再加3,而不是使指针向后移动不是吗?(a+0)表示什么?*(a+0)表示什么?
追答(a+0)表示的是第0行的首地址,*(a+0)表示第0行的值(即a[0])……因此*(a+0)得到的也是一个指针……
本回答被网友采纳