您的位置:首页 > 编程语言 > C语言/C++

指针初阶习题(C语言)

2021-02-21 22:48 1041 查看

题一:

答案:

解析:
unsigned long*指针变量pulPtr
unsigned long数组名pulArray是数组首元素地址
所以指针变量pulPtr存储的是数组首元素的地址
pulArray是数组首元素地址+3,跳过3个元素的地址,来到第四个元素的地址
解引用一下,得到第四个元素,+=3,第四个元素将9改为12
解引用指针变量pulPtr找到数组第一个元素,6
pulPtr存储的还是数组首元素的地址,+3后解引用,得到数组的改变后的第四个元素,12

题二:

答案:B
解析:
二级指针,也是指针,存放的还是地址,与一级指针的空间是一样大的
二级指针是用来存放一级指针的地址
数组的地址是用数组指针来存放的
二级指针是哦用来存放地址的,大小根据是32位平台(4)还是64位平台(8)决定
题三:

答案:C
解析:
整形指针+1,跳过一个整形的大小,4个字节
指针-指针(相当于地址-地址)得到的是中间元素的个数
指针存放的是地址,地址是以二进制补码(无符号整形)形式存储的,可以比较大小
题四:

答案:A
解析:
*的优先级低于[]的优先级
所以arr先与[]先结合,说明arr是数组
10说明数组里面有10个元素,每个元素的类型是int*
题五:

思路:
1.递归实现
2.指针实现
3.数组实现
指针代码实现:


解析:

1.scanf函数碰到空格将截断
所以使用get函数(地址)读取一行的内容(碰到\n截断)
2.地址+6,向后指向第7个元素的地址
所以right要指向最后一个元素的地址,需写成str+sz-1
left指向的是首元素的地址
指针变量接收传过来的首元素的地址
3.利用第三个变量进行元素的交换
4.所以left++,right--
5.并且left永远小于right
6.且left==right时说明只有一个元素,不需要进行交换
7.所以left < right即可
8.使用asssert函数检测变量合理性

题六:

代码:

解析:
a=2,n=5
ret *10+a
当i=0时,ret=0*10+2=2
当i=1时,ret=2*10+2=22
当i=2时,ret=22*10+2=222
....
题七:

代码:

解析:
1.假设一个数为123
2.那么将判断1的三次方+2的三次方+3的三次方的和是否等于123,如果等于那么这个数就是水仙花数
3.利用临时变量tmp进行统计(i的值不能改变)
题八:

代码+分析:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: