C语言数组与指针常考笔试题(原题+解析+原码)

⭐️前面的话⭐️

大家好!对于数组与指针你们会了吗?准备了一些相关的笔试题,测一测你全部会了吗?如果能轻松回答正确,恭喜你,指针与数组已经学得非常扎实了。

📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴2021年9月16日🌴
✉️坚持和努力一定能换来诗与远方!
💭参考书籍:📚《明解C语言》,📚《C语言程序设计现代方法》,📚《C primer plus》
💬参考在线编程网站:🌐牛客网🌐力扣
🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
博主的码云gitee,平常博主写的程序代码都在里面。



00

🍃 1.数组试题

🍂1.1一维数组题组

下面程序会输出什么结果?

//一维数组
int a[] = {
   1,2,3,4};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a+0));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof(a[1]));
printf("%d\n",sizeof(&a));
printf("%d\n",sizeof(*&a));
printf("%d\n",sizeof(&a+1));
printf("%d\n",sizeof(&a[0]));
printf("%d\n",sizeof(&a[0]+1));

我们都知道sizeof是用来求某一数据类型所占内存的大小,其中单位为字节。对于指针类型的大小在32位平台上占4个字节,64位平台占8字节。数组名一般情况下指数组首元素的地址,但是有例外,也就是二般情况:使用sizeof(数组名)计算数组名大小,计算的是整个数组的大小;&数组名指的的是数组指针,对其进行+1运算会跳过整个数组,比如int arr = {1,2,3,4,5},&arr = 00000001&arr + 1 = 00000021

int a[] = {
   1,2,3,4};//数组类型为int
printf("%d\n",sizeof(a));//sizeof计算数组名得整个数组大小,16
printf("%d\n",sizeof(a+0));//对数组名做运算,属于一般情况,为指针,4 or 8
printf("%d\n",sizeof(*a));//解引用数组名,数组名为首元素地址,解引用得元素,该数组元素类型为int,大小为4
printf("%d\n",sizeof(a+1));//对数组名做运算,属于一般情况,为指针,4 or 8
printf("%d\n",sizeof(a[1]));//数组第二个元素,类型是int,4
printf("%d\n",sizeof(&a));//数组指针,4 or 8
printf("%d\n",sizeof(*&a));//解引用数组指针,指向整个数组,16
printf("%d\n",sizeof(&a+1));//数组指针进行加法运算还是指针,4 or 8
printf("%d\n",sizeof(&a[0]));//取第一个元素地址,指针,4 or 8
printf("%d\n",sizeof(&a[0]+1));//指针加法运算还是指针,4 or 8

🍂1.2字符数组题组

🌿1.2.1不含’\0’题组

下面程序会输出什么?

char arr[] = {
   'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));

下面再来聊一聊strlen,该函数为C语言中一库函数,用来计算字符串中字符的个数,参数为字符指针,它是根据\0为结束标志,如果一个字符数组中不含\0则会越出数组地址,直到读到\0为止才结束。字符串默认最后带一个\0

//字符数组
char arr[] = {
   'a',<
  • 120
    点赞
  • 202
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 98
    评论
评论 98
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

未见花闻

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

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

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

打赏作者

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

抵扣说明:

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

余额充值