【问题标题】:What is the default value of an element of an uninitialized character array?未初始化字符数组的元素的默认值是多少?
【发布时间】:2020-11-12 04:25:20
【问题描述】:

这是我写的代码

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

如果我将 1 作为 *,则没有输出。 但是数组大小中大于 1 的任何东西都会导致 1 个输出。这意味着当我声明数组大小时,元素被某个值占用。

现在,我真正需要的是写一个条件 if 循环(例子)

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

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

【问题讨论】:

  • 你还没有初始化arr,所以不能说打印了什么
  • 这个问题已经解释了你的问题的答案answer
  • 请正确识别您的代码。

标签: arrays c c-strings


【解决方案1】:

没有默认值。

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

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

【讨论】:

  • 实际上我试图打印一个我不知道大小的数组
  • @mr.loop 您问题中的代码未显示您不知道其大小的数组。我只能回答你问的问题。
  • 让我重新表述一下。我想打印一个数组,其初始化或定义的元素数量我不知道。无论如何,我得到了答案。
【解决方案2】:

做(声明时),

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

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

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

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

用于检查我是否未定义该元素。 此示例在您的输入不包含 0 时有效,如果它确实将所有元素与其他内容和条件相同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2014-11-30
    • 2023-01-03
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多