gpt4 book ai didi

c - 为什么参数三等于 "TERM_PROGRAM=Apple_Terminal"?

转载 作者:行者123 更新时间:2023-11-30 14:46:02 25 4
gpt4 key购买 nike

我正在制作相当于的汇编代码

#include <stdio.h>

int main(int argc, char *args[]){
printf("%s", args[0]);
printf("%s", args[1]);
printf("%s", args[2]);
return 0;
}

C 代码和汇编都显示以下结果:

$ ./main :
./main(null)TERM_PROGRAM=Apple_Terminal

$ ./main one :
./mainone(null)

$ ./main one two :
./mainonetwo

执行./main one时和./main two ,输出有意义。但是,为什么调用./main不带参数时,第三个参数显示为 TERM_PROGRAM=Apple_Terminal



奇怪的是,当我制作一个执行以下命令的 bash 脚本时:

echo $0
echo $1
echo $2

当我可以时,我会得到以下输出 ./main没有参数:

./main
<empty line>
<empty line>

哪里<empty line>是一个空行。

最佳答案

严格来说,访问argc之外的argv是一种未定义的行为。在您的情况下,请记住 main 签名是 (int args, char ** argv, char ** envp)。最后一个参数指向程序环境,而环境字符串恰好在内存中与程序参数紧邻。

关于c - 为什么参数三等于 "TERM_PROGRAM=Apple_Terminal"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52571747/

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