题一: 答案: 解析: 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的值不能改变) 题八: 代码+分析: