【答案】:D 解析:通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
选择 Bint a[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};相当于int a[][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 0, 0}};而 int * p = *(a + 1);表明 p 此时指向 5 所以要想输出9, p 需要 += 4;剩下就是 * 和 ++ 优先级的...
【答案】:D 解析:数组和指针的关系非常密切,因为数组名称单独使用是表示数组的首地址。故可用的表示可能是a[i],p[i],*(p+i),同样&(a[i])表示地址,因此*(&a[i])等同于a[i]。本题答案为D。
void sort(int a[ ],int n){ int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){ int aa[10]={1,2,3,4,5,6,7,8,9,10 },i; sort(&aa[2],5); for(i=0;i<10;i++)printf(“%d,”,aa[i]); ...
A ,第一个运算p都是执行3的,*(p++)先把p的值取出来,再把指针移到4所在的内存。++*p应该是4,先移到4所在内存在取出来
答案是 C) p+=2,*p++。关于P+=2指向的是数组的第二个元素,是因为p++操作在p+=2操作之后,它将指针偏移2个元素,也就是p最终指向数组a的第三个元素,即a[2],而*p++表示取出p所指向的元素并且p++,因此最终得到的结果是a[2]=3。单独的p指向的是数组a的第一个元素,即a[0]=1。
B. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然后取*p的值,所以是a[3]=4 C. p += 3使p指向a[3], *p++表示先取*p的值, 然后p增加1(指向a[4]), 所以取得的值是a[3]=4 D. p += 2使p指向a[2], ++*p对*p的值增加1, 所以取得的值是a[2]=a[2]+1=4 ...
定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1]。。因此int a[][4]的写法就是表示,第一维大小没限制,但是第二维数组大小就是4,也就是int a[][4]={{1,2,3,4},{5,6,7,8},{9,10}},明显是3。分析:二维数组的一维大小,即指二维数组...
址,也就是赋值给a[5],这个命令和a[5]=a[10];这个时候,数组的成员的值已经发 生 了变化,分别是a[]={1,2,3,4,5,11,7,8,9,10,11,12,};*/ q--; /* q由原来指向a[5].变成了指向a[4]所以 *q==5;*p==11