【发布时间】:2016-03-27 20:44:54
【问题描述】:
我试图弄清楚 c 中二维数组的内存布局是如何工作的。尤其是字符串数组。看了this site
,我知道它应该如何工作了但是在进行分配时像
char *states[] = {
"California", "Oregon",
"Washington", "Texas"
};
是否自动设置行大小以匹配最长字符串的大小?
我尝试使用以下代码来解决这个问题,但我仍然不明白。
int main(){
char *test[] = {
"0", "12",
"345", "6789"
};
int i = 0;
int j = 0;
for (i=0; i<10; i++){
for (j=0; j<10; j++){
printf("%d,%d: ", i,j);
printf("%c\n", test[i][j]);
}
}
return 0;
}
我觉得所有行都应该具有相同的大小,但在遍历数组时,下一个字符串似乎在一个空格之后立即开始。
提前致谢!
【问题讨论】: