1、数组名和指针
int a[10];//数组名是a
在C语言中 a 有两个意思:
(1)代表整个数组
sizeof(a) ----> 40
typeof(a) ----> 求a的类型数组类型 int [10]
&a 数组a的地址
这三种情况 a 都是代表整个数组
(2)代表一个指针/地址
数组名可以看作是指向数组第0个元素的指针常量***
int * p = a;//a 代表的是 &a[0]
"指针常量"
任何的类型的数据都有变量和常量的区别
int b;// int 变量
10// int 常量
区别是什么:变量可改,常量不可改
指针也有常量与变量之分
int b;
int *p;// p 指针变量
int a[10];//a 指针常量
p = &b;//修改 p 的值,可以
a = &b;//修改 a 的值,不行,因为 a 只能作为指针常量用
例:
int a[10] = {1,2,3,4};// 初始化
int *p = a;
//1
int i;
for(i = 0;i < 10;i++)
{
printf("%d ",*(p+i));// a[i]
}
printf("\n");
//2
for(i = 0;i < 10;i++)
{
printf("%d ",*(a+i));
}
printf("\n");
//3
i = 0;
while(i < 10)
{
printf("%d ",*p);
p++;
i++;
}
printf("\n");
//4 有问题