亡灵序曲有几个版本:字符串交换

来源:百度文库 编辑:高考问答 时间:2024/05/11 19:00:28
以下由说明和赋值语句组成的各选项中正确的是_____
A.float a[5][4],*p[5]={*a,&a[1][0],a[2],*a+12,*(a+4)};
B.double a[4][5],b[5][4],*p;p=a;b=p;
Cstatic double a[3][4],(*p)[4],(*q)[4];p[0]=a[0];q=p;
D.float a[4][5],b[4][4],(*)[4],(*q)[5];p=a;q=b;
请帮我选一下,并说明每一项判断的理由.谢谢
不好意思,标题写错了D.float a[4][5],b[4][4],(*p)[4],(*q)[5];p=a;q=b;为什么A不正确?

SORRY,A才是正确的,楼主比我研究的更透惨,在这里表示感谢,我也学到了些东西。
说明一下C和D为什么是错的,A是对的。
A里面*p[5]是指的指针数组,里面只要装的是地址就可以了,所以里面的元素都是地址就正确,不用管其他。
C里面的(*p)[4]是指二维数组的指针,P[0]=a[0]是不合法的。
D里面的(*p)[4]的4是表示二维数组中的列数,所以P=a是不对的,在a[4][5]中我们看到其列数为5。