您的位置:首页 > 其它

定义一个一维指针指向二维数组并打印

2016-03-07 22:24 288 查看
间接证明二维数组在物理上是线性存储的

#include <stdio.h>

// 证明二维数组在物理上是线性存储的
// a[i][j]
// a[0] = a+0; a[1] = a+1; a[i] = a+i ;a+i表示第i-1行的地址
// *a表示第一行第一列的地址, *a+1表示第一行第二列的地址
// 定义一个一维指针指向二维数组的时候, 要将其指向二维数组的第一行第一列的地址,也就是*(a+0)+0=*a
// 但是不能定义成*a[0]+0 = *a[0]; 具体原因待在下再深入学习,下回合揭晓;

int main(void)
{
char a[10][3] = {"aaa", "bbb", "ccc", "ddd"};
char *pa;
int i = 0;

pa = *a;    // pa指向二维数组的第一行第一列;

for (i=0; i<12; i++){
printf("%c\n", *(pa+i));
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二维数组