本文作者:qiaoqingyi

c语言指针编程题(c语言指针编程题及详解)

qiaoqingyi 2023-12-06 99

1、main char *p1,*p2,str50=quotABCDEFGquotp1=quotabcdquotp1指针指向字符串abcd的首地址 p2=quotefghquotp2指针指向字符串efgh首地址 strcpystr+1,p2+1指针移一位所指的字符串fgh 复制到 str1这个位置;答案是A,首先定义p是一个指向int类型的指针,不过这个指针没有初始化,也就是没有指向然后定义了一个int类型的变量i,这里千万不要认为i也是个指针,如果i跟p一样,要在前面也加个*号然后分析答案 A,这里对p指向。

c语言指针编程题(c语言指针编程题及详解)

2、main int a12=1,2,3,4,5,6,7,8,9,10,11,12,*p4,ifori=0ilt4i++pi=ai*3 分别把a0a3a6a9的地址赋值给 p0,p1,p2,p3printf;建议换地方做题~第二题那么明显的大小为10的数组下标最多为9这种题目都答案给错,可见出题者的水平,第一题无论怎样都不可能离开C和D 答案居然为B太侮辱智商不必纠结了 想学习指针去看C指针与陷阱这本书。

3、p=arr表示p指向的是数组arr的第一个元素,也就是30p++,这个时候,p指向的是数组里的第二个元素,也就是25 p+3也就是第五个元素,就是10 所以,输出的结果是10;BCD很明显是错误的 B ,数组名不是变量 C a+1和*a+1仅数值上相同 a+1类型是int*3, *a+1是int D 数组当函数参数时退化为指针,所以指针也可以当实参,而不仅仅是数组 那就只能选A了。

4、include ltstdioh void my_sortint *arr, int n int i, jint tmp = 0for i=0 iltn1 i++ for j=i+1 jltn j++ if *arr+j lt *arr+i tmp = *arr+j;mainint a6,x,yprintfquot\nInput 5 numbersquotfor i=1ilt=5i++ scanfquot%dquot,a+iprintfquot\nInput xquotscanfquot%dquot,xa=xi=5while x!=*a+iiifi0 printfquot%。

5、c的值为4注意sizeof是求括号中变量的数据长度即占内存的字节数,因为p是指针变量,而题中已说明占4个字节,所以结果为4亲测正确 char*p=quot123quotint cc=sizeofpprintfquot%dquot,creturn 0输出为;while *p1++=*p2++含义是1先执行*p1=*p2,然后指针p1和p2都向后移动一位当p2移动到字符串尾时,*p2=#39\0#39,这样,*p1也等于#39\0#39,整个表达式*p1++=*p2++的值就变为#39\0#39由于字符在内存中就是以。

阅读
分享