【发布时间】:2015-04-07 06:09:45
【问题描述】:
如果我想打印出这样的字符串数组:
char juices_A[][12] = { "dragonfruit", "waterberry", "sharonfruit", };
我可以简单地使用juices_A[0],juices_A[1],juices_A[3],分别作为指向字符串"dragonfruit"、"waterberry"、"sharonfruit"的指针,然后打印出来。
但是如果我想打印出 int 数组的数组,比如:
int data[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
我不能简单地使用data[0],data[1],data[2]作为指向{ 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 }的指针,我需要采用更复杂的方式将它们打印出来。我需要在循环内使用循环。所以我想知道为什么我不能在 int 情况下使用指针?我在书上读到“数组变量就像指针..”所以我假设 int 数组变量 data[0],data[1],data[2] 也像指针......
#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;
int data[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
for (; i_B < 3; i_B++) {
int i_C = 0;
for (; i_C < 3; i_C++)
printf("%i,", data[i_B][i_C]);
printf(";");
}
return 0;
}
结果是:
dragonfruit;waterberry;sharonfruit;
1,2,3,;4,5,6,;7,8,9,;
【问题讨论】:
-
该语言将
char*视为一个字符串——一个具有终止空字符的字符数组。int和int*没有类似的东西。char和char*在这方面很特别。 -
你似乎理解得很清楚,参考上面的评论,简单的答案是'不'。
-
顺便说一句,当您的数组被称为
juices_A时,您的示例指的是juice_A[0]。