若有以下定义,且0<=i<4,则不正确的赋值语句是 int b[4][6],*p,*q[4];
A q[i]=b[i];
解析:
A:q是一个指针数组,本质是一个一维数组,b[i]相当于将二维数组拆开成一个一位数组,每个元素还是包含多个元素的一位数组,本质一样,所以可以赋值。
B:p是一个int型指针,而b是一个二维数组名,某些环境运行不会出错,但严谨意义上是不允许的,b,b[0],&b[0][0],结果都是b[0][0]的地址,但是三个方式的类型不完全相同,b是int(*)[]型,b[0]是int *型,&b[0][0]是int*型,而指针p是int *型,所以p=b犯了类型不同的错误。
C:理由同B,p和b[i]类型相同,所以可以赋值。
D:q是一个指针数组,每个元素也是一个指针,q[i]里边存放某个数据的地址,而&b[0][0]是b[0][0]的地址,所以可以赋值。