辨析sizeof() 和strlen函数(包含相关二级习题)

知识点这一篇是简化容易记忆的版本

全面细致了解看  指针基础知识点合集5(基础入门到深入理解)

1.sizeof() :求占内存

2.strlen函数: \0 之前字符串 字符的个数

#include <stdio.h>
#include <string.h>
int main()
{
    char arr1[]="abcd";//d的后面自动补上\0;
    char arr2[]={'a','b','c','d'};//以单个元素赋值,没有\0的结束符
    printf("strlen1=%d\n",strlen(arr1));//strlen()计算\0之前的字符长度
    printf("strlen2=%d\n",strlen(arr2));//该处计算结果应为随机值,没有\0
    printf("sizeof1=%d\n",sizeof(arr1));//计算了包含\0的数据空间大小
    printf("sizeof2=%d\n",sizeof(arr2));//4个字符所以为4
    return 0;
 } 

 

3.二级真题

第一题:

解析:

字符变量一个只占一个字节

sizeof(name)=1*10=10;

strlen(name) 遇见\0结束,=6;

sizeof(str) 因为str是一个字符指针变量,存放的是数组首元素地址,是一个地址,因此为4

任何地址都为4

strlen(str)  因为str指向的是name 此时name只放了6个元素,所以为6

答案:10 6 4 6

第二题:

sizeof(b)因为b是指针所以必然是4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值