gpt4 book ai didi

c - main null 中的 char * argv[] 参数是否终止?

转载 作者:太空狗 更新时间:2023-10-29 16:20:03 25 4
gpt4 key购买 nike

所以我想知道命令行参数是否总是以 null 结尾? Google 似乎说是,并且在 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

最佳答案

是的。 argv 数组中的非空指针指向 C 字符串,根据定义,这些字符串以空值终止。

C 语言标准只是声明数组成员“应包含指向字符串的指针”(C99 §5.1.2.2.1/2)。字符串是“由第一个空字符终止并包括第一个空字符的连续字符序列”(C99 §7.1.1/1),也就是说,它们根据定义以空字符终止。

此外,argv[argc] 处的数组元素是一个空指针,因此数组本身在某种意义上也是“空终止”。

关于c - main null 中的 char * argv[] 参数是否终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com