您的位置:首页 > 其它

C经典 数组名访问二维数组

2016-05-02 11:04 295 查看
1.如图所示



a代表第0行首地址 a+1代表第1行首地址 ,

a+i代表第i行的首地址

*(a+i)代表取得a[i]数组的首地址

**(a+i)代表取得a[i]数组的首地址指向的值,如果i=1,则=9

2.事例代码

#include <stdio.h>

int main(int argc, const char * argv[])
{

// 定义二维数组
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9,10,11,12}
};
//列指针   a[0]=&a[0][0], a[0]+1=&a[0][1], a[0]+2=&a[0][2]
printf("&a[0] = %p\n", &a[0]);//=0x7fff5fbff840
printf("&a[0][0] = %p\n", &a[0][0]);//=0x7fff5fbff840

printf("a[0]+1 = %p\n", a[0]+1);//=0x7fff5fbff844
printf("&a[0][1] = %p\n", &a[0][1]);//=0x7fff5fbff844

printf("a[0]+2 = %p\n", a[0]+2);//=0x7fff5fbff848
printf("&a[0][2] = %p\n", &a[0][2]);//=0x7fff5fbff848

//-------------------------
//行指针 a[0] a[1] a[2]
//a+1 第二行首地址
//a[i]+j 获取a[i][j]地址
//*(a[i]+j) 获取a[i][j]的值
for (int i = 0; i < 3; i ++) {
for (int j = 0; j < 4; j ++) {
printf("%d\t",*(a[i]+j));
printf("%d\t",*(*(a+i)+j));//*(a+i) = a[i]
}
printf("\n");
}

printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: