【发布时间】:2013-11-01 14:08:22
【问题描述】:
4我试图从指向指针数组的指针中获取指针地址,但是当我运行下面的代码时,我只是得到了垃圾。如何从 char ** 数组中检索 char * 之一的指针地址?感谢您查看此内容。
具体来说,我想通过“what”获取“wh”的地址,并赋值给“hi”。
char * hi;
char * wh;
char ** what;
int main(void) {
char z[4] = "wx\0";
char a[4] = "ab\0";
hi = &z;
wh = &a;
what = (char **) malloc( 25 * sizeof(char));
what[0] = &hi;
what[1] = &wh;
printf("%s | %s\n", hi, wh);
hi = &what[1];
printf("%s | %s\n", hi, wh);
return EXIT_SUCCESS;
}
【问题讨论】:
-
当你说“指针地址”时,你是指指针本身的地址,还是它所指向的地址?
-
对不起,我应该更清楚,它指向的地址。
-
谢谢,我的印象是字符串终止符 \0 是一个字符。我已经相应地更新了代码。
-
当你调用 malloc 时,它返回一个 char*。你为什么要把它转换成char**?此外,调用 calloc(),而不是 malloc(),用于分配连续的内存块,如“25 个字符”。