【问题标题】:initializing array element to NULL [closed]将数组元素初始化为 NULL [关闭]
【发布时间】:2012-11-08 16:26:25
【问题描述】:

如何将数组的元素初始化为 NULL。例如,如果我有 字符*数组[10]; 我希望最后一个元素为 NULL,以便我可以将此数组传递给 execv

【问题讨论】:

  • 设置为0即可。NULL应该与指针一起使用。
  • 抱歉我编辑了。它的意思是指针
  • @chris:关于execv 的部分表明它实际上应该是NULL,但是OP 没有意识到他们正在处理一个指针数组。
  • @chris:你说得对,execv 需要const char*char**
  • 按照您的要求,将 10 元素数组的最后一个元素设置为空指针 array[9] = 0;。但我怀疑这还不是全部。

标签: c arrays null


【解决方案1】:

char* 的数组初始化为所有NULLs:

char* array[10] = { NULL }; /* The remaining elements are implicitly NULL. */

如果你想为execv()提供初始元素:

char* array[10] = { "/usr/bin/ls", "-l" }; /* Again, remaining elements NULL. */

或者如果您希望从数组声明中省略维度:

char* array[] = { "/usr/bin/ls", "-l", NULL };

【讨论】:

    【解决方案2】:

    NULL 只不过是:#define NULL (void*) 0 UL 您所说的NULLnul 字符,即'\0'

    请参阅man execv 页面或其他 exec 进程 .. 它实际上需要可变数量的参数

    【讨论】:

    • .. '\0' 有什么 ascii 值?
    • @duedl0r 那将是 0
    • 这不是标准但你可以说null有3种类型,第一种是:NULL指针已经知道,第二种是NUL字符,即'\0'它的ASCII是0。第三种是实际零,即十进制 0,具有 ASCII 48
    • @dueld0r:由于 C 中的字符常量的类型为 int,因此字符常量 '\0' 与整数常量 0 的含义完全相同。有些人更喜欢它,因为它提醒他们他们正在使用字符。就我个人而言,我不禁将其读作“整数值为 0 的字符的int 值”(在 C++ 中是“整数值为 0 的字符的char 值”,含义相同char(0)).
    • @Omkant 虽然您要表达的内容看起来很明显,但它的形式并不正确:NUL/'\0' 是由十进制值 0 表示的 ASCII 字符。没有 ASCII 字符 0。十进制 48 是 ASCII 字符 '0' 是另一回事。
    【解决方案3】:

    execv 接受char * 的数组,而不是char 的数组。

    char *const parms[] = {"abc", "-a", "pqr", NULL};
    

    【讨论】:

      【解决方案4】:

      如果你的数组是 object,String,Char 如果你声明它将自动为 null

      例如。

      Oject [] myarray=new Object[10];
      

      数组的任何地方都是空的

      【讨论】:

        猜你喜欢
        • 2018-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2015-01-28
        • 1970-01-01
        • 2010-09-25
        相关资源
        最近更新 更多