gpt4 book ai didi

c++ - 对于基于指针和数组的字符串初始化,strlen 和 sizeof 的不同答案

转载 作者:行者123 更新时间:2023-11-30 16:12:33 25 4
gpt4 key购买 nike

Possible Duplicates:
C: differences between pointer and array
Different sizeof results

基本上,我就是这样做的......

 char *str1 = "Sanjeev";
char str2[] = "Sanjeev";
printf("%d %d\n",strlen(str1),sizeof(str1));
printf("%d %d\n",strlen(str2),sizeof(str2));

我的输出是

7 4
7 8

我无法给出sizeof str1的原因是4。请解释一下它们之间的区别。

最佳答案

因为 sizeof 给出了数据类型的大小(以字节为单位)。 str1的数据类型是char*,占4个字节。相比之下,strlen给出 chars 中字符串的长度,不包括空终止符,因此为 7。 sizeof str2 是 8 字节的 char 数组,它是包括空终止符的字符数。

请参阅 C-FAQ 中的此条目:http://c-faq.com/~scs/cclass/krnotes/sx9d.html

试试这个:

 char str2[8];
strncpy(str2, "Sanjeev", 7);
char *str1 = str2;
printf("%d %d\n",strlen(str1),sizeof(str1));
printf("%d %d\n",strlen(str2),sizeof(str2));

关于c++ - 对于基于指针和数组的字符串初始化,strlen 和 sizeof 的不同答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58312160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com