sizeof和strlen本质区别

Posted on   牛man  阅读(47)  评论(0编辑  收藏  举报

sizeof定义

 sizeof 运算符。表达式 sizeof(type) 得到某个类型或某个变量在特定平台上的准确存储大小,返回值unsigned int 类型

strlen定义

strlen是个函数,函数原型:size_t strlen(const char *str),用来计算字符串的实际长度(不包括‘\0'在内),函数的返回值size_t 为unsigned int 类型,

 例子:

复制代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define PI 3.14159265
const int b = 50000;
int main(void)
{
        char a[] = "hello world";
        int *c ="asfdgh";
        unsigned int d = sizeof(c);
        printf("%ld,%ld,%ld,%ld",sizeof(c),strlen(c),sizeof(a),strlen(a));

//sizeof 是用来计算某种类型在特定平台所占字节大小,也可以用来计算字符串长度
//strlen 是处理字符串的库函数,在string.h中声明,用来计算字符串的实际长度

return 0;
}
复制代码
1
运行结果:<br>8 6 12 11
复制代码
#include<stdio.h>
int main()
{
    // char ss[4][10];
    // char ss[4]="dddd";
    int i;
    int len ,len1;
    
char site[] = "RUNOO  B";
len  = sizeof(site);
len1 = strlen(site);
printf("len :%d,len1 :%d\n",len,len1);
printf("%s\n ",site);
for(i=0;i<sizeof(site);i++)
{
    printf("%p\n",(site+i));
}

}

运算结果:

len :9,len1 :8
RUNOO B
0x7ffcaac2c0cf
0x7ffcaac2c0d0
0x7ffcaac2c0d1
0x7ffcaac2c0d2
0x7ffcaac2c0d3
0x7ffcaac2c0d4
0x7ffcaac2c0d5
0x7ffcaac2c0d6
0x7ffcaac2c0d7

 
复制代码

 

int * 在64位操作系统内存空间是8byte,所以sizeof(a)=8

总结:

字符串在计算机内存中存储时,编译器会自动添加一个‘/0'作为字符串结束符,在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。

sizeof 计算结果包括’\0'在内,而strlen 计算结果遇到‘/0'就结束,计算的结果不包括’/0';

空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。您不需要把 null 字符放在字符串常量的末尾。C 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。

 

 

  

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示