gpt4 book ai didi

c - 为什么我的 char 数组中有随机字符?

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

当我在 C 中编译并运行以下代码时,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
char func[16];
for(int i = 0; i < sizeof(func); i++) {
printf("Char %d in func is %c\n", i, func[i]);
}
return 0;
}

我明白了:

Char 0 in func is P
Char 1 in func is
Char 2 in func is @
Char 3 in func is
Char 4 in func is
Char 5 in func is
Char 6 in func is
Char 7 in func is
Char 8 in func is p
Char 9 in func is
Char 10 in func is @
Char 11 in func is
Char 12 in func is
Char 13 in func is
Char 14 in func is
Char 15 in func is

当我在不同的时间编译时,我在 char 数组中得到不同的随机字符。我猜这是因为它在内存中找到随机的 ASCII 字符,指针被删除但实际信息留在堆中?

我是否应该在 for 循环中将我的数组中的所有内容都设置为 null,或者是否有一个函数可以做到这一点?

最佳答案

未初始化的局部非静态变量,例如您的数组 func,有一个不确定 值。在没有初始化的情况下以任何方式使用它们会导致 undefined behavior .

实际上,内容将是您运行程序时内存中的任何内容。这将是看似随机的。

关于c - 为什么我的 char 数组中有随机字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39098871/

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