gpt4 book ai didi

C - 为函数内的双指针赋值

转载 作者:行者123 更新时间:2023-12-02 08:48:20 25 4
gpt4 key购买 nike

我试图理解 C,特别是双指针,我遇到了这个问题。我知道对于单个指针(删除 for 循环等)这个概念是可行的,但我似乎在定位的注释中遇到了段错误。

有人可以解释为什么我会收到此错误吗?我有一种预感,在我传递 myArgs 的地址之前,我需要为其分配一些内存,但由于我只是在做一个浅拷贝,我还需要分配内存吗?

void readArgs(int argc, char *argv[], char ***myArgs) {
int i;
for(i = 0; i < argc; i++) {
/* crashes here @ i = 0 */
*myArgs[i] = argv[i];
}
}

int main(int argc, char *argv[]) {
char **myArgs;
int i;

readArgs(argc, argv, &myArgs);
for(i = 0; i < argc; i++)
printf("arg[%d]: %s\n", i, myArgs[i]);
}

最佳答案

您遇到了段错误,因为 myArgs 未初始化。您确实应该使用 malloc 分配空间。您不是在制作浅拷贝;你正在复制一个指针数组。

也就是说,三重指针是 C 语言中的一种代码味道。您永远不需要 **

关于C - 为函数内的双指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667850/

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