关于数组的问题,求解!!
1、以下的定义和语句中,对w数组元素的非法引用是 ???
int w[2][3],(*pw)[3]; pw=w;
A)*(w[0]+2)B)*(pw+1)[2]
C)pw[0][0]D)*(pw[1]+2)
请大家解释一下(*pw)[3]; pw=w;是什么意思?晕~~~
2、以下程序段中,对数组元素的错误引用语句是???
int a[12]={0},*p[3],**pp,i;
for(i=0;i <3;i++)
p[i]=&a[i*4];
pp=p;
A)pp[0][1]B)a[10]
C)p[3][1]D)*(*(p+2)+2)
哪位高手解释一下选项D,谢~~~
[解决办法]
pw=w 把pw指向w的数组
[解决办法]
*(*(p+2)+2))就是a[2][2]
p是指向一个整型元素数组的指针,p+2就是指向数组a[2]的指针等同于&a[2],*(p+2)就是a[2](这是一个一维数组)首元素a[2][0]的指针,等同于&a[2][0]
*(p+2)+2就是&a[2][0]+2,是指向a[2]数组的第三个元素(下标为2),即为&a[2][2]。
[解决办法]
D应该没错吧
#include <iostream>
using namespace std;
void main()
{
int a[12]={0,1,2,3,4,5,6,7,8,9,10,11},*p[3],**pp,i;
for(i=0;i <3;i++)
p[i]=&a[i*4];
cout < <*(*(p+2)+2) < <endl;
system( "pause ");
}
*(p+2)表示p第三个单元内容,即i = 2,即8+2,*(*(p+2)+2)即表示 a[10],输出为10啊。