未初始化字符数组的元素的默认值是多少?

What is the default value of an element of an uninitialized character array?

这是我写的代码

    int main(){
    char arr[50][*];
    arr[0][0]=1;
    if(arr[0][1]){
    printf("%d",arr[0][0]);}

如果我把1作为*,就没有输出。 但是任何大于 1 的数组大小都会导致 1 output.that 意味着当我声明数组大小时元素被某个值占用。

现在,我的实际需求是写一个条件if循环(例子)

if(arr[0][1]!='null') // or '0',false,undefined, etc

但我很困惑那个空的但已声明的元素中有什么,因为上面的内容不起作用。

没有默认值。

对于在没有static关键字的函数中定义的对象,初始值为垃圾。

您无法通过测试对象来确定它是否已初始化。您必须编写代码以避免在设置之前读取任何对象的值。

做(声明时),

char arr[50][2]={0}  //or whatever the size of 2nd dimension other than 2

这会将所有元素(在本例中为 100 个)替换为 0。

所以,根据我的需要,我可以做

if(arr[0][1] != 0)

用于检查我是否未定义该元素。 此示例在您的输入不包含 0 时有效,如果它确实用其他内容替换了所有元素并且条件也如此