我想知道命令行参数是否始终以空字符结尾。谷歌似乎是肯定的,并且在GCC编译时也表明是这样,但我能保证这总是正确的吗?
int main(int argc, char** argv)
{
char *p;
for(int cnt=1; cnt < argc; ++cnt)
{
p = argv[cnt];
printf("%d = [%s]\n", cnt, p);
}
return 0;
}
$ MyProgram -arg1 -arg2 -arg3
1 = -arg1
2 = -arg2
3 = -arg3
char* argv[]
这样的数组不是二维数组;它是指针数组。(在真正的二维数组中,每个字符串肯定必须具有相同的长度,因此我们不需要终止符?)所指向的对象不必相邻。也就是说,在这里,并不要求每个连续指针指向的地址必须在前一个编号参数的 NUL 终止符后 1 字节。 - underscore_d