【C语言进阶】C指针详解之练习(附解析)

这篇博客详细讲解了C语言中数组的sizeof和strlen函数的使用,并通过一系列的练习题加深理解,涵盖整形数组、字符数组、字符串数组、指针变量以及二维数组的应用。同时,文章还介绍了指针笔试题,包括对指针类型、步长、地址的理解,帮助读者提升对C语言指针的掌握。
摘要由CSDN通过智能技术生成

目录

一、数组sizeof/strlen的练习

        (1)整形数组-sizeof函数        

        (2)字符数组-sizeof函数

        (3)字符数组-strlen函数

        (4)字符串数组-strlen函数

        (5)字符串数组-strlen函数

         (6)指针变量-sizeof函数

        (7)指针变量-strlen函数

        (8) 二维数组-sizeof函数

二、指针笔试题

        (1)笔试题1

        (2)笔试题2

        (3)笔试题3

        (4)笔试题4

        (5)笔试题5

        (6)笔试题6

        (7)笔试题7

        (8)笔试题8


首先我们再来重新认识一下数组名的概念

数组名是首元素的地址

1.sizeof(数组名) - 数组名表示整个数组

2.&数组名 - 数组名表示整个数组

注意:

上面这两种情况都需要 sizeof() / &后面直接+数组名,如果不是直接 + 数组名,则不是表示整数数组。除了上述两种情况外,其余所有情况数组名均表示的是首元素地址。

其次地址的大小根据操作平台32位/64位的不同会开辟不同大小的空间。

32位开辟的是4个字节的空间大小,而64位开辟的是8个字节的空间大小。

 那么接下去我们就来看题目叭!

一、数组sizeof/strlen的练习

写出下面程序执行的结果:

//一维数组
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));

//字符数组
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));

char arr[] = "abcdef";
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));

char *p = "abcdef";
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p+1));
printf("%d
  • 32
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HyDraZya

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

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

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

打赏作者

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

抵扣说明:

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

余额充值