面试题答案
一键面试- 差别阐述:
- 数组名
arr
是一个常量指针,它指向数组的起始地址,其值在数组的生命周期内不能被修改。而指针ptr
是一个变量指针,它的值可以被修改,指向其他内存地址。
- 数组名
- 举例说明:
#include <stdio.h> int main() { int arr[10]; int *ptr = arr; // 尝试修改数组名arr的值,这会导致编译错误 // arr++; // 修改指针ptr的值是合法的 ptr++; return 0; }
- 原因解释:
- 数组名
arr
代表数组的首地址,这个地址在数组定义时就固定下来了,它是数组本身的一个属性,不能被赋值修改,所以不支持像arr++
这样的操作。而指针ptr
是一个普通的变量,存储的是内存地址,它的值可以根据需要重新赋值,ptr++
操作会使它指向下一个元素的地址(这里ptr
类型为int *
,所以ptr++
会使ptr
的地址值增加sizeof(int)
大小)。
- 数组名