数组:数组是用于存储多个相同类型数据的集合
指针:指针是一个变量,但它和普通变量不一样,它存放的是其变量在内存中的地址
1,赋值
数组:只能一个一个元素的赋值或拷贝
指针:指针变量可以相互赋值
2.表示范围
数组有效范围就是其空间的范围,数组名使用下标引用元素,不能指向别的元素
指针可以指向任何地址,但是不能随意访问,必须依附在变量的有效的范围之内
3.sizeof
数组:
数组所占的储存空间的内存:sizeof(数组名)
数组的大小:sizeof(数组名)/sizeof(数据类型)
指针:
在32位平台,无论指针的类型是什么,sizeof(指针名)都是4.
在64位平台,无论指针的类型是什么,sizeof(指针名)都是8.
4.指针数组和数组指针
指针数组
int*qiangshou[2];//定义一个有两个元素的指针数组,每个元素都是一个指针变量
int girl1=167;
int girl2=167;
qishou[0]=&girl1;
qishou[1]=&girl2;
数组指针:
int(*p)[3]//定义一个指向三个成员的数组的指针
访问元素的两种方式
intA[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
p=&A[0];
数组法:(*p)[j];
指针法*((*p)+j)
5.传参
数组传参时,会退化成指针
方法一
void method_(int arr[],int len){
for(int i=0;i<len;i++)
{
printf("arr[%d]=%d",i,arr[i])
}
}
方法二
void method_(int arr[10]){
for(int i=0;i<len;i++)
{
printf("arr[%d]=%d",i,arr[i])
}
}
方法三
void method_(int* arr,int len){
for(int i=0;i<len;i++)
{
printf("arr[%d]=%d",i,arr[i])
}
}