指针 关于const
关于const
数组变量 是 const 的指针
在初学数组时,我们都有这样的思考:既然变量可以互相赋值,那么 数组 可以相互赋值吗?
比如说:
int a = 1;
int b = 2;
int arr1[3] = {1, 2, 3};
int arr2[3] = {0};
b = a;//ok
arr2 = arr1;//error
一但这么些程序就会报错,为什么会这样呢?
这是因为,以上面的为例:
int arr2[3] = {0}
在编译器看来其实是这样的:int* const arr2
上一篇我们也学到了,const在 * 后 const 修饰的是地址 arr2,因此arr2是不能被改变的
int* const arr
与 int arr[]
是否可以划等号?
我们先来看下面这个程序:
int main() {
int arr[3] = { 1, 2, 3 };
int* const q = arr;
printf("arr = %p\n", arr);
printf("&arr = %p\n", &arr);