为什么错了,为什么是这个算法,可以求一下详细解答吗?谢谢大家!!
应该是选择A,在第一个x=%%%d的时候%d取到了后面x的值,y=%%d这里,只是输出了两个字符% 和d ,并不是任何取值的输出格式,z = %d,就是第二个取值格式,所以取到的是y的值。
应该选A。%d是占位符,%是特殊符号,%%被转义了只输出%,%%d没有被当成占位,不取参数。相当于print多传了一个参数但没用到。
正确答案为A,在第一个x=%%%d的时候%d取到了后面x的值,y=%%d这里,只是输出了两个字符%和d,并不是任何取值的输出格式,z=%d,就是第二个取值格式,所以取到的是y的值。
我们看代码可以更容易理解。
int a[3][4];
int(*p)[4];//数组指针,p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为4个整型的数组。所以p是一个指针,指向一个数组叫指针数组。
//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
一个数组,叫数组指
int *q[3];//指针数组
p = a;
for (int i = 0; i < 3; ++i)
{
q[i] = a[i];数组名一定不能放在左值
}
int a[3][4];//a(int(*)[4])a[i](int *) a[i][j](int)
int b[10];//b(int *) b[i](int)
从二维数组来理解,首先先介绍几个概念。
a[0] | ||||
a[1] | ||||
a[2] |