- #include <stdlib.h> 
- #include <stdio.h> 
- #include <inttypes.h> 
-   
- int main() 
- { 
- 	int n = 2; 
- 	int m = 3; 
- //	int i[2][3] = { {1, 2, 3}, {4, 5, 6} }; 
- 	int * i = (int*)malloc(sizeof(int) * n * m);	// i[n][m] 
- 	for(int j = 0; j < n * m; ++j) i[j] = j + 1; 
- 	for(int j = 0; j < n; ++j) 
- 	{ 
- 		for(int k = 0; k < m; ++k) 
- 			printf("%d ", *(i + j * m + k)); 
- 		printf("\n"); 
- 	} 
-   
- 	int (*ii)[m] = (int(*)[m]) i; 
- 	for(int j = 0; j < n; ++j) 
- 	{ 
- 		for(int k = 0; k < m; ++k) 
- 			printf("%d ", ii[j][k]);  
- 		printf("\n"); 
- 	} 
- 	ii = (int(*)[m]) i; 
- 	printf("i: 0x%p\n", i); 
- 	printf("ii: 0x%p\n", ii); 
- 	printf("sizeof(i): %" PRIuPTR "\n", sizeof(i)); 
- 	printf("sizeof(*i): %" PRIuPTR "\n", sizeof(*i)); 
- 	printf("sizeof(ii): %" PRIuPTR "\n", sizeof(ii)); 
- 	printf("sizeof(*ii): %" PRIuPTR "\n", sizeof(*ii)); 
- 	free(i); 
- } 
				I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGludHR5cGVzLmg+CgppbnQgbWFpbigpCnsKCWludCBuID0gMjsKCWludCBtID0gMzsKLy8JaW50IGlbMl1bM10gPSB7IHsxLCAyLCAzfSwgezQsIDUsIDZ9IH07CglpbnQgKiBpID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpICogbiAqIG0pOwkvLyBpW25dW21dCglmb3IoaW50IGogPSAwOyBqIDwgbiAqIG07ICsraikgaVtqXSA9IGogKyAxOwoJZm9yKGludCBqID0gMDsgaiA8IG47ICsraikKCXsKCQlmb3IoaW50IGsgPSAwOyBrIDwgbTsgKytrKQoJCQlwcmludGYoIiVkICIsICooaSArIGogKiBtICsgaykpOwoJCXByaW50ZigiXG4iKTsKCX0KCglpbnQgKCppaSlbbV0gPSAoaW50KCopW21dKSBpOwoJZm9yKGludCBqID0gMDsgaiA8IG47ICsraikKCXsKCQlmb3IoaW50IGsgPSAwOyBrIDwgbTsgKytrKQoJCQlwcmludGYoIiVkICIsIGlpW2pdW2tdKTsgCgkJcHJpbnRmKCJcbiIpOwoJfQoJaWkgPSAoaW50KCopW21dKSBpOwoJcHJpbnRmKCJpOiAweCVwXG4iLCBpKTsKCXByaW50ZigiaWk6IDB4JXBcbiIsIGlpKTsKCXByaW50Zigic2l6ZW9mKGkpOiAlIiBQUkl1UFRSICJcbiIsIHNpemVvZihpKSk7CglwcmludGYoInNpemVvZigqaSk6ICUiIFBSSXVQVFIgIlxuIiwgc2l6ZW9mKCppKSk7CglwcmludGYoInNpemVvZihpaSk6ICUiIFBSSXVQVFIgIlxuIiwgc2l6ZW9mKGlpKSk7CglwcmludGYoInNpemVvZigqaWkpOiAlIiBQUkl1UFRSICJcbiIsIHNpemVvZigqaWkpKTsKCWZyZWUoaSk7Cn0=