const arr = [
obj1 = {
key1: val1,
key2: val2,
key3: val3
},
obj2 = {
key3: val3
},
obj3 = {
key1: val4,
key2: val5,
key3: val1
},
obj4 = {
key1: val6,
key2: val7
}
]
有人可以解释为什么char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
数组是三维的吗?我尝试使用二维循环显示pre数组(pres
),但是,它不起作用。
答案 0 :(得分:1)
这是一个三维的字符数组,因为它在概念上是一个二维的字符串数组,而字符串是一维的以空字符结尾的字符数组。
虽然这确实有效,但这种方法的缺点是它只能保存长度为10的字符串(为空终止符留出空间)。因此,使用char *
数组会更灵活,然后根据实际字符串的需要分配和释放空间。
你说你试过看pres[4][2]
。这是没有意义的,因为数组索引在C中是从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
答案 1 :(得分:-1)
它是因为在C中定义了一串字符。 在C中,字符串只是一个单个字符的数组,如果您想在数组中使用多个单词,则必须提供一个数组数组。
在您的情况下,您希望将字符串分隔为单独的列,例如C ++将作为字符串数组[] []给出,但在C中,您必须应用另一个&#34;层&#34;代表字符串本身。