www.3112.net > C语言指针问题。。 若有int A[]={0,1,2,3,4,5,6,7,8,9,0},*p=A,

C语言指针问题。。 若有int A[]={0,1,2,3,4,5,6,7,8,9,0},*p=A,

A和D都是错的.不过A应该是印刷问题. 改成a[p-a]就对了.A p和a相等. 所以这个就是a[0]B *&抵消. 这个就是a[i]C p=a 这个也是a[i]D *(a+i)等效于a[i]. 再取值一次,类型不对. 等效于*a[i],这个是不合法的.

首先说,i是初始化了的.p的地址就是a的地址,p-a=0,没问题&a[i]代表&a[i]的地址,加上*代表存放的数,也就是a[i],没问题p[i]意思就是a[i],没问题a是a[0]的地址,*(a+i)指向a[i],再加*就不知道指到哪里去了,因为a[i]不是地址

int a[ ]={0,1,2,3,4,5,6,7,8,9}:意思是a数组为包含{0,1,2,3,4,5,6,7,8,9}的整数数组,int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a:p是等效于a的整数指针,你应该这样读int *p =a;(*号跟着变量走)定义了一个指针等于a数组首地址.

首先看数组后面为4表示有四列二维数组是123456789000 这里就可以很明显的看出是三行,所以就是a[3][4],第一个[]叫做第一维,第二个[]叫做第二维

B 是不是a[i]?? //是a[i] C p[i] 是相当于a[i],这不是在获取元素a[i]的地址吗? 为什么C也正确??// p[i] 是相当于a[i] A 中为什么能用用p减a??a[p-a]什么意思?? //p的值就是a,所以p-a的值为0,相当于a[0] D 是不是相当于*a[i], 因而不正确?? //是的*(a+i)就是a[i],那么再*a[i]就错了

别琢磨了,这是胡写的代码: int a[4]只有4个元素,=号右边的{}里却有10个数字为其赋值,编译器不会让通过的.p没有声明,不知是什么,却把它当指针为其目标赋值a[0],大错特错.同样*(p++)是编译器不认识的表达式,因为不知道p为何物.即便是p已在前面声明为int *型指针了,*p=a[0];和*(p++)也是错误的,因为p还是没有指向的野指针,就试图对其指向的目标操作.这个代码行中只有*p1;是正确的声明了一个名为p1的int *型指针.

两个问题: 1.输入k之后 ,要重新将 p 指向 a 即10行前+一句 p = a; 2.最后一个for越界,i=9 时 p+i+1 就成了 p+10

答案:d 对于数组a[10],a就是该数组的首地址,定义指针p赋值为a,那么a和p的操作基本相同:a[5]=p[5]=*(a+5)=*(p+5),对于d选项,p[5]是个int值,再取*就不对了.

这是一个指针求值的问题,答案应该是A 答案分析如下: 首先,所有的逗号运算符,是从左向右进行的,其值为右边结果计算的值 A p+=2,*(p++) 先计算p+=2 再计算*p 最后计算p++ 表达式的值在第二步计算确定的 为p[2] = a[2] = 3.表达式计算完毕之后,p指向4 B p+=2,*++p 先计算p+=2,再计算++p 最后计算*p 表达式的值在最后一步确定 为4 C p+=3,*p++ 先计算p+=3,再计算*p 最后计算++ 表达式的值在第二步确定为4,而后a[3]的值变为5 D p+=2,++*p先计算p+=2,再计算*p 最后计算++ 表达式的值在最后一步确定,为4,而后a[2]的值变为4

答案A.数组定义是a[0]=1,a[1]=2,a[2]=3, ,a[9]=10A. p += 2使p指向a[2], *(p++)表示先取*p的值, 然后p增加1(指向a[3]), 所以取得的值是a[2]=3B. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然后取*p的值,所以是a[3]=4C. p += 3使p指向a[3], *p++表示先取*p的值, 然后p增加1(指向a[4]), 所以取得的值是a[3]=4D. p += 2使p指向a[2], ++*p对*p的值增加1, 所以取得的值是a[2]=a[2]+1=4还有一种写法是(*p)++, 表示先取*p的值, 这个值再增加1

相关搜索:

网站地图

All rights reserved Powered by www.3112.net

copyright ©right 2010-2021。
www.3112.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com