【发布时间】:2014-04-25 13:41:23
【问题描述】:
我想使用一个 char 指针数组,其中数组中的每个指针都指向另一个 char 数组中的一个 char,因此,我可以通过指针打印 char 数组。
char city[14] = {'D', 'u', 'b', 'a', 'i'};
char *charPointers[100] = {0};
for(size_t i = 0;city[i] != '\0'; i++)
charPointers[i] = &city[i];
printf("\ncity = ");
for(size_t i = 0; *charPointers != 0; i++)
//printf("%c", *(charPointers[i]));
putchar(*charPointers[i]);
charPointers 是指针数组还是字符串?
如果它是一个字符串,那么我如何使用一个指针数组,使每个指针都指向一个字符?
什么是实现我想要的优雅方式? (最好使用指针算法)
【问题讨论】:
-
你想做什么?
charPointers是一个指针数组;它不是一个字符串。你问题的第二部分没有实际意义。你问“什么是实现我想要的优雅的方式”而不解释你想要什么。 -
我已经在一开始就说明了我想要的代码。我想要一个 char 指针数组来指向 city[14] 数组中的每个字符。
-
如果你真的想要 14 个字符的指针,你需要运行循环设置指针 14 次,而不仅仅是 5 次。但是,除此之外,您的指针初始化代码有效;您最终会得到一个指向
city字符串中每个非空指针的指针。正如我在回答中诊断的那样,您的打印循环的终止条件有缺陷。你真的应该展示或描述你得到的输出。您可能会得到城市名称,然后是垃圾,最终导致崩溃,但如果您这么说会更好。我的回答显示了如何以合理的方式解决问题。你还想要什么?