1. 程式人生 > >二維陣列指標的使用

二維陣列指標的使用

# include <stdio.h>

int main(void)
{
	int a[3][4] = {{0, 1, 2, 3},
				   {4, 5, 6, 7},
				   {8, 9, 10, 11}};
	printf("%0x\n", a);
	printf("%0x\n", a+1);
	printf("%0x\n", a+2);
	printf("\n");
	
	printf("%0x\n", *a);
	printf("%0x\n", *(a+1));
	printf("%0x\n", *(a+2));
	printf("\n");
	
	printf("%0x\n", a[0]);
	printf("%0x\n", a[1]);
	printf("%0x\n", a[2]);
	printf("\n");
	
	printf("%0x\n", &a[0]);
	printf("%0x\n", &a[1]);
	printf("%0x\n", &a[2]);
	printf("\n");
	
	printf("%0x\n", &a[0][0]);
	printf("%0x\n", &a[1][0]);
	printf("%0x\n", &a[2][0]);
	printf("\n");
	
	printf("%0x\n", *a+1);
	printf("%0x\n", *a+2);
	printf("%0x\n", *a+3);
	printf("\n");
	
	printf("%0x\n", *(a+1)+1);
	printf("%0x\n", *(a+1)+2);
	printf("%0x\n", *(a+1)+3);
	printf("\n");
	
	printf("%0x\n", *(a+2)+1);
	printf("%0x\n", *(a+2)+2);
	printf("%0x\n", *(a+2)+3);
	printf("\n");
	
	printf("%0x\n", a[0]+1);
	printf("%0x\n", a[0]+2);
	printf("%0x\n", a[0]+3);
	printf("\n");
		
	printf("%0x\n", a[1]+1);
	printf("%0x\n", a[1]+2);
	printf("%0x\n", a[1]+3);
	printf("\n");
	
	printf("%0x\n", a[2]+1);
	printf("%0x\n", a[2]+2);
	printf("%0x\n", a[2]+3);
	printf("\n");
	
	printf("%0x\n", &a[0][1]);
	printf("%0x\n", &a[0][2]);
	printf("%0x\n", &a[0][3]);
	printf("\n");
	
	return 0;
}
/*
 * a,a+1,a+2  a[0],a[1],a[2]  *a,*(a+1),*(a+2)
 * &a[0],&a[1],&a[2]  &a[0][0],&a[1][0],&a[2][0]
 *  表示的都是每一行元素的首地址
 * *a+1,*a+2,*a+3  *(a+1)+1,*(a+1)+2,*(a+1)+3  *(a+2)+1,*(a+2)+2,*(a+2)+3
 * a[0]+1,a[0]+2, a[0]+3  a[1]+1,a[1]+2,a[1]+3  a[2]+1,a[2]+2,a[2]+3
 * 表示的是首元素之後的幾個元素的地址 
 * 
 * 
 */

執行結果: