我尝试使用这四种表示法来表示字符串数组并测试它们以充分理解它们:
char juices_A[][12]
char *juices_B[]
char (*juices_C)[][12]
char **juices_D
所以我写了这段代码:
#include <stdio.h>
int main() {
int i_A = 0;
char juices_A[][12] = { "dragonfruit", "waterberry", "sharonfruit", };
for (; i_A < 3; i_A++)
printf("%s;", juices_A[i_A]);
puts("");
int i_B=0;
char *juices_B[] = { "dragonfruit", "waterberry", "sharonfruit", };
for (; i_B < 3; i_B++)
printf("%s;", juices_B[i_B]);
puts("");
int i_C=0;
char (*juices_C)[][12] = { "dragonfruit", "waterberry", "sharonfruit", };
for (; i_C < 3; i_C++)
printf("%s;", (*juices_C)[i_C]);
puts("");
int i_D=0;
char **juices_D = { "dragonfruit", "waterberry", "sharonfruit", };
for (; i_D < 3; i_D++)
printf("%s;", juices_D[i_D]);
puts("");
return 0;
}
当我尝试运行代码时,它显示:
dragonfruit;waterberry;sharonfruit;
dragonfruit;waterberry;sharonfruit;
dragonfruit;waterberry;haronfruit;
显然第三和第四种情况有问题,我想知道为什么。此外,我可以使用类似*juice++
或*juice--
的东西吗?
最佳答案
int i_C=0;
char (*juices_C)[12] = (char [][12]){ "dragonfruit", "waterberry", "sharonfruit", };
for (; i_C < 3; i_C++)
printf("%s;", juices_C[i_C]);
puts("");
int i_D=0;
char **juices_D = (char *[]){ "dragonfruit", "waterberry", "sharonfruit", };
for (; i_D < 3; i_D++)
printf("%s;", juices_D[i_D]);
puts("");
关于c - C中这四种情况如何分别打印出字符串数组中的字符串呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29470419/