gpt4 book ai didi

c - 将数组分配给指针混淆

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:02 26 4
gpt4 key购买 nike

我对在 C 教程中找到的一行代码感到困惑。这是代码:

int main(int argc, char *argv[]){
...
char **inputs = argv+1; // This is the confusing line
...
return 0;
}

我不明白你怎么能把一个数组分配给这样的指针。如果有人能为我澄清这一点,我会很高兴。先谢谢了!

最佳答案

假设你执行这样一个程序

C:\Temp>myprog.exe hello world

操作系统获取这些字符串并将它们放在一起,放在一个空终止字符串数组中:

{ "myprog.exe", "hello", "world", NULL } 

然后它调用 main() 并将字符串数 (3) 作为 argc 和指向该数组中第一个字符串的指针传递给它。 this指针调用argv,类型为char**(char* argv[]只是句法方便,函数内部语义等价签名)

但您希望 inputs 仅保存字符串“hello”和“world”,因此您使用此指针 argc 并指向下一个元素 - 添加一个给它:

char **inputs = argv+1;

现在 inputs 指向 { "hello", "world", NULL } .

关于c - 将数组分配给指针混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453418/

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