1. 数组和指针的区别:
- 概念:
- 数组:数组是用于存储多个相同类型数据的集合,数组名是首元素的地址。
- 指针:指针相当于一个变量,但是它和普通变量不一样,它存放的是其他变量在内存中的地址,指针名指向了内存的首地址。
- 区别:
- 数组是直接访问数据,指针是间接访问数据;
- 赋值:
- 同类型指针变量可以相互赋值;
- 数组不行,只能一个元素一个元素的赋值或拷贝;
- 存储方式:
- 数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组下标进行访问的,数组的存储空间,不是在静态区就是在栈区中;
- 指针:指针很灵活,它可以指向任意类型的数据。在32位操作系统下指针大小为4字节,在64位操作系统下指针大小为8字节;
- 内存容量:
- 用运算符sizeof可以计算出数组的容量(字节数)
- sizeof计算指针时得到的是一个指针变量的字节数,而不是指针指向内存的容量;
2.数组和指针的联系:
- 在作为函数参数时,数组会退化成为指针,故此时数组参数和指针参数等价
- 数组名在多数情况下可以看做时常量指针,其值不能改变
- *(arry+i) <==> arry[i]