#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void main()
{
int i
= 0;
int a
;
int *p
= NULL;
int arr
[5] = { 1,3,65,6,7 };
typedef int(MYArr5
)[5];
MYArr5
*pArray
=&arr
;
for (i
= 0; i
< 5; i
++)
{
printf("%d \n", (*pArray
)[i
]);
}
int c
[5] = { 1,3,65,6,7 };
int(*myp
)[5] = &c
;
for (i
= 0; i
< 5; i
++)
{
printf("%d \n", (*myp
)[i
]);
}
system("pause");
}
此处有个易混点: char *p[i]:是指针数组,即元素为地址的数组,p是指针变量,p[i]为各元素的值,亦即地址值。一般用于做关键字菜单,或main函数的命令行参数。 char (*myp)[i]:是数组指针,即(指向类型为数组的内存块的)指针,myp是指针变量,myp的值为数组的首地址,(*myp)[i] 取此数组首地址的内存块的第i个元素。 char (*myp)[i] 可以从运算符优先级角度理解,可以看做先有(*myp),后有[30],所以可以认为是先有指针myp,然后i表示myp+1的步长是i个char的大小。