数组指针 = 二维数组
int arr[10] = {1,2,3,4,5,6,7,8,9};
int (*ptr)[10];
ptr = &arr;
printf("**ptr:%d,*(*ptr+1):%d",**ptr,*(*ptr+1)); //输出1,2
int arr[10] = {1,2,3,4,5,6,7,8,9};
0041358E mov dword ptr [arr],1
00413595 mov dword ptr [ebp-28h],2
0041359C mov dword ptr [ebp-24h],3
004135A3 mov dword ptr [ebp-20h],4
004135AA mov dword ptr [ebp-1Ch],5
004135B1 mov dword ptr [ebp-18h],6
004135B8 mov dword ptr [ebp-14h],7
004135BF mov dword ptr [ebp-10h],8
004135C6 mov dword ptr [ebp-0Ch],9
004135CD xor eax,eax
004135CF mov dword ptr [ebp-8],eax
int (*ptr)[10];
ptr = &arr;
004135D2 lea eax,[arr]
004135D5 mov dword ptr [ptr],eax //12FF3C
printf("ptr%d",*(*ptr+1));
004135D8 mov esi,esp
004135DA mov eax,dword ptr [ptr] //12FF3C
004135DD mov ecx,dword ptr [eax+4] //输出2
内存显示:
0x0012FF3C 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 ...............
0x0012FF4B 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 ...............
0x0012FF5A 00 00 09