面试题 : sizeof()、strlen() 与 指针、数组的结合题型

本文探讨了sizeof和strlen在处理数组和指针时的区别。sizeof运算符返回数组或指针的总大小,而strlen则计算字符串的长度直到遇到''。在不同系统下,指针的大小会有所不同。对于一维数组,数组名表示整个数组,而对于二维数组,a是数组指针,a[0]是int *类型。strlen函数需要匹配参数类型并从内存中寻找''来确定字符串长度。
摘要由CSDN通过智能技术生成

     第二次写关于sizeof与strlen的博客了,这一次也有了更深的理解,一起进步吧,加油冲冲冲!

  • sizeof()、strlen()区别
sizeof strlen
运算符 函数
参数可以是变量 也可以是一种类型 strlen(char*)
不检查越界情况 参数类型需要对应
用来计算该变量或者类型所占内存大小 是用来计算字符串的长度,不是类型占内存的大小

关于指针大小
指针所占内存大小,由程序的大小决定。
在32位系统下,只能有32位程序;
在64位系统下,既可以有32位程序,也可以有64位程序;

① 一维数组

数组名的意义:
1 .sizeof(数组名)这里数组名表示整个数组;
2 .&数组名,这里数组名表示整个数组;
3 .除此之外,所有数组名表示首元素的地址。

定义一个一维数组,如下:
int a[] = {
   1,2,3,4};
printf("%d\n",sizeof(a));----表示整个数组所占内存大小,16 Byte
printf("%d\n",sizeof(&a));----&a等价于int(*a)[4],表示一个数组指针,4 Byte(32位程序下)
printf("%d\n",sizeof(a+0));----这里的a表示的是首元素地址,int*类型,4 Byte
printf("%d\n",sizeof(*a));----int**,二级指针,4Byte
printf("%d\n",sizeof(a+1));----a表示首元素地址,+1后也一个指针类型,4Byte,
							   //int*p + 1  加了4个字节
printf("%d\n",sizeof(a[1]));----第二个元素所占内存为4Byte
printf(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值