.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]
来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/09/22 10:28:57
.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]=1"不等价的表达式是29.
A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[1][1]=1
请给出理由谢谢
A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[1][1]=1
请给出理由谢谢
二维数组是一维数组的数组,其在内存中存储的时候,按行优先的顺序存储,而a[0] a[1] a[2]
表示每行的元素首地址
a[1]表示a[1]所在行的地址,此时a[1]相当于一维数组,其元素也就是 a[1][0] a[1][1] a[1][2] 三个元素的一维数组.
你可以将a[1]看成一维数组b,则其元素也就是b[0] b[1] b[2]
而 p1 = b 则p1[1] = b[1] = a[1][1] = 1 这也是A为什么正确的原因.
至于c和d,(*p2)[3]=a 相当于 p2[0] = a[0] p2[1] = a[1] p2[2] = a[2]
这样就可以理解了.
表示每行的元素首地址
a[1]表示a[1]所在行的地址,此时a[1]相当于一维数组,其元素也就是 a[1][0] a[1][1] a[1][2] 三个元素的一维数组.
你可以将a[1]看成一维数组b,则其元素也就是b[0] b[1] b[2]
而 p1 = b 则p1[1] = b[1] = a[1][1] = 1 这也是A为什么正确的原因.
至于c和d,(*p2)[3]=a 相当于 p2[0] = a[0] p2[1] = a[1] p2[2] = a[2]
这样就可以理解了.
.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]
已知有声明int x[2][3]={0},*p=x[0];以下表达式中有语法错误的是 A x[0] B P[0] =1
若有声明“int a[5],*b=a,(*c)[3],*d[3];”,则在以下表达式中有语法错误的是( ).A.a[0]
已知有声明“int a=3,b=4;”,下列表达式中合法的是
#includevoid main(){int *p1,*p2,a[5]={1,3,5,7,9};for(p1=a;p1
main() { int a=1,b=3,c=5;int *p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2
4. 已知有声明"int a[3][2]={{1,2),{3,4},{5,6}},*p=a[0]
下面一段代码:int a=1,b=2,t; int *p1,*p2; p1=&a;p2=&b; t=*p1;*p1=*p
int a,b,*p1*p2; 请问 p1=&a和*p1=a有什么区别?
已知点P1(-1,a),P2(3,6),且P1 P2的斜率k=2,则| P1 P2|=
若有声明“char a= 0 ; int b=1; float c=2; double d =3;”,则表达式“c=a+
已知有声明:"int a[3][2]={{1,2},{3,4},{5,6}},*p=a[1];",