我试图理解 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]);
}