指针和数组的分配区别
数组是开辟一块连续存储的内存空间,数组的标识符(数组名)可以代表整个数组。sizeof可以获得整个数组占内存空间大小。
所以数组是保存的数据,调用数据的时候 直接访问数据
指针是定义的时候,再栈中开辟一块内存,存放指针的地址(指针的地址:只存放指针的地址,不存放指向的数据)
所以指针是保存数据的地址,间接访问数据(先获得指针的内容,再将指针内容做为地址进行读取)
在《C专家编程》中提出三个标准和三个例外,可以有效区分指针和数组的区别,以及什么情况下是相同的
规则1:表达式中的数组名 被 编译器当作 指向 该 数组的第一个元素 的 指针
规则2:数组下标 总是 与 指针的偏移量 相同
规则3:在函数 的 参数声明中,数组名 被编译器当作 指向该数组的 第一个元素的 指针
对于下列情况下,数组的引用 不能用 指向该数组第一个元素的指针 来代替
特例1. 数组做为sizeof()的操作数,sizeof显然求的是整个数组的大小,而不是指向第一个元素的大小
特例2. 使用 & 操作符 取数组的地址
特例3. 数组 是 一个字符串常量 初始化值