【发布时间】:2013-02-05 07:45:26
【问题描述】:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char name[10];
printf("%s\n", name);
return 0;
}
C 中未初始化的字符串持有什么值?编译器是否会自动分配大小为 10 的存储空间并用垃圾值填充它?写上面的代码基本上会发生什么?
【问题讨论】:
-
@Yuushi 这个链接真的很有帮助。但是 C 字符串和 C int 数组之间是否存在直接对应关系?我们是否也可以将字符串的所有字符初始化为特定值,例如: char name[10] = {'a'} ; ?(我们可以对 C int 数组执行此操作,如您指出的问题的第二个答案中所写)。
-
int和char数组的初始化是不同的,是的,你不能写char c[10] = {'a'}来初始化一个char数组与所有a的(你也不能这样做int x[10] = {1}来初始化一个全为 1 的 int 数组)。但是,这不是您的问题。所述问题完全相同,答案完全相同,无论类型如何。 -
@Nikunj Banka 不,您不能以这种方式启动字符数组
char name[10] = {'a'}。仅当您想像这样char name[10] = {0}以 0 启动时,才可以这样做 -
@Yuushi,
char和int的初始化有什么不同?char只是 C 语言中的一种整数类型。 -
“未初始化的字符串”听起来无效。你怎么能确定一个序列以 '\0' 结尾而不把 '\0' 放在那里? @MohamedKALLEL
char name[10] = {'a'};是一个有效的初始化。它将第一个字节设置为“a”,接下来的九个字节设置为 0。
标签: c