char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
有人可以解释为什么pres
数组是三维的吗?我试着用二维的循环(pres[4][2]
)显示pre数组,但是它不起作用。c字符串数组维数
char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
有人可以解释为什么pres
数组是三维的吗?我试着用二维的循环(pres[4][2]
)显示pre数组,但是它不起作用。c字符串数组维数
这是因为C中定义了一串字符。在C中,一个字符串只是一个单个字符的数组,如果你想在一个数组中使用多个单词,则必须给出一个数组数组。
在你的情况下,你想要将字符串分隔成单独的列,例如C++可以作为字符串数组[] []给出,但是在C中,您将不得不应用另一个“图层”来表示字符串他们自己。
“C中的字符串只是单个字符的数组” - 单词“just”可能存在问题,因为这可以理解为“字符串”和“字符数组”是简单的同义词,这是错误的。它提醒初学者关于无效终止符的重要性从未受伤。 –
这是一个三维字符数组,因为它在概念上是一个二维数组字符串,而字符串是一维空字符终止数组。
尽管这样做有效,但这种方法的缺点是它只能保存长度为10的字符串(为空终止符留下空间)。出于这个原因,使用char *
的数组并倾向于更灵活,然后根据实际字符串的需要分配和释放空间。你说你试过看pres[4][2]
。这是没有意义的,因为数组索引是从0开始的。pres[3][1]
将是"Monroe"
- 数组中的最后一个字符串。
要全部打印出来是非常简单的:
#include <stdio.h>
int main(void){
int i;
char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
for(i=0;i<4;i++) printf("President %s %s\n",pres[i][0],pres[i][1]);
return 0;
}
,输出:
President George Washington
President John Adams
President Thomas Jefferson
President James Monroe
你是怎样尝试显示呢?数组声明/初始化看起来很好...... – Dmitri
这似乎是一个数组''[8] [11]',即使它有效,您更喜欢'char pres [4] [2] [11] = { {“George” ,“华盛顿”}, {“John”,“Adams”}, {“Thomas”,“Jefferson”}, {“James”,“Monroe”} };' –
把它想象成2-二维数组的字符串。字符串本身是一维字符数组,并且2 + 1 = 3。 –