snrg.net
当前位置:首页 >> .已知有声明"int A[3][3]={0},*p1=A[1],(*p2)[3]=A;&q... >>

.已知有声明"int A[3][3]={0},*p1=A[1],(*p2)[3]=A;&q...

二维数组是一维数组的数组,其在内存中存储的时候,按行优先的顺序存储,而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] 这样就可以理解了.

二维数组 6个元素存储空间 依次存储1 2 3 4 5 6p指向a[0]即a[0][0] 1的地址p+4指向之后四个 即5的地址所以*(p+4)输出为5是否有问题? 有问题请追问 没问题请采纳

结果是5,二维数组他们的存储地址是连续的

void main() { int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int *p=a[0];// p = &a[1][0] int (*q)[4]=a; // q[0]是一个数组指针,且指向的是一个大小为4的数组->&a[0][0] // q[1]是一个数组指针,且指向的是一个大小为4的数组->&a[1][0] // q[2]是一个数组指

printf(“%d”, p[0][1])这一项是错误的,p[3]是指向int指针的数组,每个元素都是一个指针,p[0][0]是正确的,但是p[0][1] 是错误的,会访问越界.

答案是 C 因为指针不能 被直接赋值.下次有问题你可以直接的问我啊!

int a,x=3;定义两个int型变量a和x,其中x=3;int*p1=&x;定义一个int型指针p1,指针p1指向x的地址;即*p1=3(有星号的),&x是取x的地址的意思;a=p1==&x;a=指针p1的地址(赋值语句),p1==&x是比较语句,比较是否相等.这句是先把p1的地址赋给a,然后再和&x的地址比较.

最后: a=2, b=0if(a>b)c=a;a=b;b=c; 这一句相当于如下:if (a>b) { //判断为false,所以if语句里面的c = a 不执行 c = a;}a = b; // --> a = 2;b = c; // ---> b=0故,最后a=2, b=0

#include<stdio.h> void main() { int a=2,b=3,*p1=&a,*p2=&b; *p1=*p2; //相当于a=b;a,b的值都为3了*p2=a; //相当于*p2=3;将3赋给b,printf("%d",b); }

[图文] A.a=*p1+*p2 B.p1=a C.p1=p2 D.a=*p1*(*p2) 请帮忙给出正确答案和分析,谢谢! 悬赏: 0 答案豆 若有语句int *p, a=10 p=&a 下面均代表地址的一组选项是(). A.a, p, *&a B.&*a, &a, *p C.*&p, *p,&

相关文档
xmlt.net | lpfk.net | 5615.net | qimiaodingzhi.net | lzth.net | 网站首页 | 网站地图
All rights reserved Powered by www.snrg.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com