gpt4 book ai didi

C:不同的字符串定义,我使用 sizeof() 得到不同的大小

转载 作者:太空宇宙 更新时间:2023-11-04 01:00:25 25 4
gpt4 key购买 nike

我正在测试对相同字符串内容“abc”使用 sizeof() 的情况。我的功能是这样的:

int main(void){
char* pass1 = "abc";
char pass2[] = "abc";
char pass3[4] = "abc";
char pass4[] = "";

scanf("%s", pass4);

printf("sizeof(pass1) is: %lu\n", sizeof(pass1));
printf("sizeof(pass2) is: %lu\n", sizeof(pass2));
printf("sizeof(pass3) is: %lu\n", sizeof(pass3));
printf("sizeof(pass4) is: %lu\n", sizeof(pass4));

return 0;
}

我输入“abc”作为pass4,输出是这样的:

sizeof(pass1) is: 8
sizeof(pass2) is: 4
sizeof(pass3) is: 4
sizeof(pass4) is: 1

我期待所有 4s。我认为上面的 4 个字符串定义是相同的。

为什么 sizeof(pass1) 返回 8?为什么 sizeof(pass4) 为 1?

最佳答案

当您对指针类型使用 sizeof 时,您将获得内存地址的大小(以字节为单位)。在这种情况下,8 是地址的大小(以字节为单位)。 sizeof 在 C 中静态分配的只读字符串将返回字符串的实际大小(以字节为单位),包括空字节。

关于C:不同的字符串定义,我使用 sizeof() 得到不同的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42059540/

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