获取字符串、字符串数组、数组等的长度

简单来说

在这里插入图片描述

strlen()和sizeof()

先放一个例子

char *greeting1 = "hello";
char greeting2[] = {'h', 'e', 'l', 'l', 'o'};
char greeting3[] = {'h', 'e', 'l', 'l', 'o', '\0'};
char greeting4[] = "hello";
    
printf("greeting1 sizeOf: %ld, strlen: %ld\n", sizeof(greeting1), strlen(greeting1));
printf("greeting2 sizeOf: %ld, strlen: %ld\n", sizeof(greeting2), strlen(greeting2));
printf("greeting3 sizeOf: %ld, strlen: %ld\n", sizeof(greeting3), strlen(greeting3));
printf("greeting4 sizeOf: %ld, strlen: %ld\n", sizeof(greeting4), strlen(greeting4));

输出结果:

greeting1 sizeOf: 8, strlen: 5
greeting2 sizeOf: 5, strlen: 7
greeting3 sizeOf: 6, strlen: 5
greeting4 sizeOf: 6, strlen: 5

函数 strlen 返回字符串里的字符数不包括终止字符 ‘\0’,这里注意 strlen 是一个 C 的函数,而 sizeof 只是一个操作符。

我们知道,sizeof 操作符的参数可以是数组、指针、类型、对象、函数等,函数 strlen 的参数只能是字符串

对于 sizeof, 其参数不同时,其返回的值也不一样,如下:

1、数组:编译时分配的数组空间大小;
2、指针:存储该指针所用的空间大小(32位机器上是4,64位机器上是8);
3、类型:该类型所占的空间大小;
4、对象:对象的实际占用空间大小(这个指的是在 C++ 中);
5、函数:函数的返回类型所占的空间大小。函数的返回类型不能是 void 类型;

在这里插入图片描述
关于字符串长度更具体解释见博客:不见得你会算字符串长度

发布了54 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43629813/article/details/103494547
今日推荐