若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/16 20:09:24
若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?

若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?
若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?

若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?
int *p[3];
int a[2][3];
则p是一个数组,数组元素是指针,该指针指向int类型的变量
所以p[0]即 *(p + 0)是数组p的第0个元素,p[0]的类型为指向int类型的变量.
a是一个数组,数组的元素是含3个int类型元素的数组.
所以a[1]是数组的第一个元素,a[1]的类型为含3个int类型元素的数组,a[1][2]是a[1]的第2个元素,a[1][2]的类型是int变量,&a[1][2]的类型就是指向int类型变量的const指针
所以p[0]=&a[1][2]是在把一个指向int变量的const指针赋值给int类型的指针变量.在C语言中,这是合法的.
不只是谁告诉楼主这个赋值语句不对?

若有定义int a[8],*p=a;,则*(p+3)表示_____ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int **p; p=(int**)a; 其中p=(int**)a;是什么意思啊 若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢? 若有以下定义和语句:int a[5]={1,3,5,7,9},*p; p=&a[2]; 则++(*p)的值是__6__. 若有以下定义和语句:int a[4]={1,3,5,7},*p; p=&a[2]; 则*--p的值是【 】 int[][4]={1,2,3,4,5,6,7,8};int(*p)[4]=a;则表达式**(p+1)-*(*p+1)的值是? C语言:若有定义 int *p,则表达式 p++ 的值就是 p 所指向的变量的地址值加1?请判断正误并说明理由int a[]={1,2,3};int *p=&a[1];printf(%d,*(p++));printf(%d,*(p--));//为什么两次输出结果一样 1.已有定义 int a[10],*p; 则正确的赋值语句是( ).A.p=100; B.p=a[5]; C.p=a[2]+2; D.p=a+2;2.若有定义int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是 ( )A.*p B.a[1] C.*a D.a[10]3.设有定义int x[6]= 1.已有定义 int a[10],*p; 则正确的赋值语句是( ).A.p=100; B.p=a[5]; C.p=a[2]+2; D.p=a+2;2.若有定义int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是 ( )A.*p B.a[1] C.*a D.a[10]3.设有定义int x[6]= 1.已有定义 int a[10],*p; 则正确的赋值语句是( ).A.p=100; B.p=a[5]; C.p=a[2]+2; D.p=a+2;2.若有定义int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是 ( )A.*p B.a[1] C.*a D.a[10]3.设有定义int x[6]= 若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的是( )若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的是( B)A、p+=2;*(p++);B、p+=2;*++p;C、p+=3;*p++;D、p+=2;++*p; 设有定义:int a[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为(3) 若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的是( )A、p+=2;*(p++);B、p+=2;*++p;C、p+=3;*p++;D、p+=2;++*p; 若有以下定义,则值为4的表达式是 A)p+=3,*(p++) B)p+=3,*++p C)p+=4,*p++ D)p+=4,++*p具体一点,定义在 int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 1.已知int a[3][4],*p=a; 则p表示 设变量定义为“int a[2]={1,3},*p=&a[0]+1;”,则*p的值是____,若*p=&a[0]++,则*p又为多少___. C语言 若有定义语句:int a[2][3],*p[3];则以下语句中正确的是()A.p=a;B.p[0]=a;C.p[0]=&a[1][2]; D.p[1]=&a;但是我在其他地方看到似乎A这种表达也没有错误,还有*p[3]是不是等价于*(p[3])? { int a[]={1,2,3,4,5,6}; int*p; p=a; printf(%d ,*p); printf(%d ,*(++p)); printf(%d ,*++p);{ int a[]={1,2,3,4,5,6};int*p;p=a;printf(%d ,*p);printf(%d ,*(++p));printf(%d ,*++p);printf(%d ,*(p--));P+=3;printf(%d%d,*p,*(a+3));}求