未初始化字符数组的元素的默认值是多少?
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 时有效,如果它确实用其他内容替换了所有元素并且条件也如此
这是我写的代码
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 时有效,如果它确实用其他内容替换了所有元素并且条件也如此