1.数组名(特殊的常量指针)
int test01()
{
/*
1. sizeof 2.数组名取地址&a
除了以上两种情况 数组名都表示指向首元素的地址
*/
int a[4] = {1,2,3,4};
printf("sizeof(a):%d\n",sizeof(a));//16
printf("&a:%d\n",&a);//04
printf("&a+1:%d\n",&a+1);//20 步长为16
}
2.定义指针指向数组的两种方式
int *p = &a;
int *p1;
p1 = &a;
3. 数组下标能不能为0
int a[4] = {1,2,3,4};
int *p = a;
p +=3;
printf("p[-1]:%d\n",p[-1]);//人理解的
printf("p[-1]:%d\n",*(p-1));//机器理解的
4. 定义数组
这里注意一下使用typedef来定义数组
typedef int (ARRAY_TYPE)[5];
这句话的意思是 定义有五个int类型的数组
ARRAY_TYPE myarray;
这样定义表示 int myarray[5];
int test02()
{
int i;
int arr[5] = {1,2,3,4,5};
typedef int (ARRAY_TYPE)[5];//定义有五个int类型的数组
ARRAY_TYPE myarray;//int myarray[5];
for(i = 0;i<5;i++)
{
myarray[i] = 100+i;
}
for(i = 0;i<5;i++)
{
printf("*(myarray+i):%d\n",*(myarray+i));
}
}