c - 全局使用 argv 指针安全吗?

标签 c argv

全局使用argv指针安全吗?还是有可能失效的情况?

即:这段代码安全吗?

char **largs;
void function_1()
{
    printf("Argument 1: %s\r\n",largs[1]);
}
int main(int argc,char **argv)
{
    largs = argv;
    function_1();
    return 1;
}

最佳答案

是的,全局使用argv是安全的;您可以像在程序中使用任何 char** 一样使用它。 C99 标准甚至规定了这一点:

The parameters argc and argv and the strings pointed to by the argv array shall be modifiable by the program, and retain their last-stored values between program startup and program termination.

C++ 标准没有类似的段落,但同样是隐含的,没有相反的规则。

请注意,C++ 和 C 是不同的语言,您应该只选择一种来提出您的问题。

关于c - 全局使用 argv 指针安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31605132/

相关文章:

perl - 如何告诉 Perl 函数从特殊的 ARGV 句柄中读取文件?

c++ - 一条定义规则 : Can corresponding entities have different names?

c - 套接字recv函数不返回更新的值

bash - 进程 argv 中的意外字符串转义

c - 使用argv读取文件

c - 如何在 C 中对 argv 的元素进行排序?

c++ - 32kB的编译代码是多少

c++ - C - x+1 没有赋值是什么意思?

c - 如何修复 C 中简单文件读/写程序的输出?

c++ - 如何检查是否给出了参数?