【C语言】sizeof与strlen的对比

sizeof与strlen的关联性

Strlen和sizeof在某种程度上存在关联性。

strlen是一个C标准库函数,用于计算字符串的长度。它接受一个以null字符结尾的字符串作为参数,并返回该字符串的字符数量(不包括null字符)。

sizeof是一个C语言的运算符,用于计算一个变量或数据类型所占用的内存空间大小。它返回的是一个对象或类型所占用的字节数。

在一些情况下,strlen和sizeof可以返回相同的值,特别是在处理以null字符结尾的字符串时。例如:

char str[] = "Hello";
size_t str_length = strlen(str);
size_t array_size = sizeof(str);
 

在上面的例子中,str_lengtharray_size将会返回相同的值,因为str是一个以null字符结尾的字符串,且在声明时已经分配了足够的内存空间。

然而,需要注意的是,sizeof返回的是一个类型所占用的总字节数,而不是字符串的实际长度。因此,对于指针变量或动态分配的字符串,在使用sizeof时可能会返回不同的结果。

char* str_ptr = "Hello";
size_t ptr_size = sizeof(str_ptr);   // 返回指针的字节数
 

在上面的例子中,ptr_size将会返回指针类型的字节数,而不是字符串的实际长度。

综上所述,虽然strlen和sizeof在处理以null字符结尾的字符串时可能返回相同的值,但在其他情况下,它们并没有直接的关联性。

下面我会以一些笔试题来展示他们的区别

关于sizeof有关的一些笔试题

sizeof的两个例外
1.sizeof(数组名) 则是整个数组
2.&数组名   是整个数组的地址
除了这两个情况,其他情况都表示首元素的地址,地址的大小是4/8个字节

一维数组:

字符数组:

二维数组:

关于指针运算的一些笔试题

最后一题有点难度哦 如果有想知道详细过程的私信我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值