gpt4 book ai didi

你能帮我理解这个程序吗?

转载 作者:行者123 更新时间:2023-11-30 19:02:13 25 4
gpt4 key购买 nike

你能帮我理解为什么我会得到这个输出吗?

#include<stdio.h>
#include<string.h>
void main() {
char a[] = "Hello World";
char *p;
p=a;
printf("%d%d%d%d",sizeof(a),sizeof(p),strlen(a),strlen(p));
}

输出:1281111(我的操作系统是64位的)

如果编译的话上面的代码应该显示 1241111(output)在 32 位系统上运行。由于64位它显示1281111。

在我的第一年,我看到了这个问题,当我去寻找输出时,我得到 1281111。

但令人惊讶的是,上面代码的输出有两个选项:1)12121111 和 2)1221111。(大学问题)。

最佳答案

如果将 printf() 语句更改为以下内容,则可以更轻松地了解发生了什么:

printf("%d\n%d\n%d\n%d\n",sizeof(a),sizeof(p),strlen(a),strlen(p));

在我的系统上,这会导致输出:

12
8
11
11

换句话说:

  • 数组的大小为 12 字节。 (11 表示字符串,加 1 表示 \0 字符。)
  • 指针的大小为 8 个字节(因为我使用的是具有 64 位内存地址的计算机,而不是可能输出 4 的 32 位计算机)。<
  • 当用作字符串(char* 指针)时,ap 是等效的。 (因为 p 指向 a。)字符串 Hello World 的长度是 11(因为 strlen() 不包含字符串末尾的 \0 字节)。

希望这有帮助。

关于你能帮我理解这个程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307371/

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