数组和指针的区别
数组和指针的区别
1. 概念
- 数组:数组是用于存储多个相同类型数据的集合。
- 指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址。
2. 赋值,存储方式,求sizeof,初始化
1.赋值
同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或者拷贝
2.存储方式
数组:数组在内存中是连续存放的,开辟一块连续的内存空间。
数组的存储空间,不是在静态区就数组在栈上
指针:指针可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存。
指针:由于指针本身就是一个变量,再加上它所存放的也是变量,所以指针的存储空间不能确定。
3. 求sizeof
数组
数组所占存储空间的内存:sizeof(数组名) 数组的大小:sizeof(数组名)/sizeof(数据类型)
1
2
3
4
5
6
7
8
9
10
using namespace std;
int main(){
int a[] = {1, 2, 3, 4};
cout << sizeof(a) << endl; // 16->sizeof(a)表示计算整个数组大小,一个int元素为4字节,4个元素,所以为16
cout << sizeof(*a) << endl; // 4->对a解引用,就是首元素的大小,同上
return 0;
}指针:
在32位平台下,无论指针的类型是什么,sizeof(指针名)都是4,在64位平台下,无论指针的类型是什么,sizeof(指针名)都是8。
1
2
3
4
5
6
7
8
9
using namespace std;
int main(){
char *p = "abcde";
cout << sizeof(p) << endl;
return 0;
}