C++指针和数组之间的区别
一、数组和指针定义
数组:数组是用于存储多个相同数据类型的有序集合。
指针:指针是一个变量,但是他和普通变量不一样,它存放的是其他变量在内存中的地址。
**二、赋值**
数组:只能一个一个元素的赋值或者拷贝。
指针:指针变量可以相互赋值。
**三、表示范围的不同**
数组的有效范围就是其空间的范围,数组名使用下标引用元素,不能指向别的数组。
指针:可以指向任何地址,但是不能随意访问,必须依附在变量的有效范围之内。
四、sizeof
数组:
数组所占内存空间的内存: sizeof(数组名)
数组大小计算:sizeof(数组名) / sizeof(数组[ 0 ])
指针:
在32位平台下,无论指针的数据类型是什么,sizeof(指针名)都是4.
在64位平台下,无论指针的数据类型是什么,sizeof(指针名)都是8.
二、指针数组和数组指针
**指针数组**
int * arr[2]; //这是定义了有两个元素的指针数组,每个元素都是一个指针变量。
int a=11;
int b=12;
*arr[0]=&a;
*arr[1]=&b;
**数组指针:**
int (*p)[3]; //定义了一个指向三个成员的数组指针。
访问元素的方式有两种分别是:
int A[4][3]={
{173,158,166},
{168,155,171},
{163,164,165},
{163,164,172}
};
p=&A[4];
1.数组法: (*p)[j]
2.指针法: *((*p)+j)