如何将数组中的元素初始化为NULL。例如,如果我有 char *array[10]; 我想要最后一个元素为 NULL ,以便我可以将此数组传递给 execv 。
如何将数组中的元素初始化为NULL。例如,如果我有char *array[10]; 我希望最后一个元素为NULL,这样我就可以将该数组传递给execv函数。
char*
数组初始化为所有的NULL
: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 };
execv接受的是char *
数组,而不是char
数组。
char *const parms[] = {"abc", "-a", "pqr", NULL};
NULL
仅仅是:#define NULL (void*) 0 UL
你所说的NULL
是指空字符nul
,即'\0'
请参考man execv
页面或其他exec进程...它实际上接受可变数量的参数
null
。有三种类型,第一种是:已知的 NULL 指针,第二种是 NUL 字符,即 '\0',它的 ASCII 码为 0。第三种是实际的零,即十进制 0,其 ASCII 码为 48。 - OmkantNUL
/'\0'
是由十进制值0
表示的ASCII字符。没有ASCII字符0
。十进制数48
作为ASCII字符'0'
是另外一回事。 - alk如果你的数组是对象、字符串或字符类型,如果你声明它,它将自动为 null。
例如:
Oject [] myarray=new Object[10];
数组中的任何位置都是 null
struct
,但它似乎与OP的问题没有太强的关联,至少对我来说是这样。 - Stev
execv
的部分表明实际上应该是NULL
,但是提问者没有意识到他们正在处理指针数组。 - Fred Fooexecv
函数接受一个const char*
和一个char**
参数。 - Steve Jessoparray[9] = 0;
。但我怀疑这不是全部。 - Steve Jessop