学点 C 语言(22): 数据类型 - 多维数组与指针(3)
5. 再探数组的指针地址:
#include
int main(void)
{
char cs[2][3] = {
{'A','B','C'},
{'D','E','F'}
};
//在本例中(二维数组)
// cs 是指向数组 cs[0] 的地址
// *cs 是指向 cs[0][0] 的地址
printf("%p, %pn", cs, *cs);
// **cs 指向 cs[0][0] 的值
printf("%c, %cn", **cs, cs[0][0]);
getchar();
return 0;
}
6. 使用指针遍历三维数组:
#include
int main(void)
{
char cs[2][2][3] = {
{
{'A','B','C'},
{'D','E','F'}
},
{
{'1','2','3'},
{'4','5','6'}
}
};
int i;
int count = sizeof cs / sizeof cs[0][0][0];
for (i = 0; i < count; i++) {
printf("%cn", *(**cs + i));
}
getchar();
return 0;
}
7. 遍历多维数组还是用指针变量更容易理解:
#include
int main(void)
{
char cs[2][2][3] = {
{
{'A','B','C'},
{'D','E','F'}
},
{
{'1','2','3'},
{'4','5','6'}
}
};
char *p = (char *)cs; /* 相对上面的例子, 这里加了类型转换; 这样编译器就没有提示了 */
int i;
int count = sizeof cs / sizeof cs[0][0][0];
for (i = 0; i < count; i++) {
printf("%cn", *p++);
}
getchar();
return 0;
}





