关于C语言指针的笔试题

今天下了超级大的雪,被困在寝室出不去了,来更新三道关于指针的笔试题

1,2比较简单

3比较难

来看第一题,涉及到二维数组

 

其实可以通过画个图很容易就找到ptr1,ptr2所指向的位置,答案就很明了了。

第二题,这里主要要注意数组a里面的内容是啥,以及%s和%p再printf函数中打印内容的区别,

 这个题也比较简单,首先 char*a[]是一个内含char*类型地址的指针数组,在初始化时初始化了3个字符串,但这个指针数组内存放的就是三个字符串的地址,再用二级指针**pa指向了指针数组a,pa++就指向了at的地址,打印%s就会打印地址指向的内容,如果是%p,那么就是at的地址。

第三题,这个题比较难,需要反复看看

首先来看第一个printf,这个比较简单,首先++让cpp指向了c+2,再解引用两次就会得到POIN

第二个printf,因为++优先级比较高,所以cpp再向下跳,再解引用,找到c+1的空间,然后再--,相当于c+1-1,导致该空间指向了c+0,也就是上面这个监视图所指向的地址。也就是改变了指向的空间,再解引用找到了指向ENTER的空间,也就是ENTER的首地址,再进行加3,跳过E,N,T,找到ER。

第三个printf,首先来说明*cpp[-2]的含义,**(cpp-2)+3,首先cpp-2指向了c+3的位置,解引用之后拿到了该空间的内容c+3,再解引用找到了FIRST的地址,再加3,打印出ST。

第四个printf和第三个类似,cpp[-1][-1]+1的含义是*(*(cpp-1)-1)+1,规律同上,推出EW。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何以过春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值