2025-08-07 深入理解C++中数组名的常量指针特性:为何数组名不可被赋值? 深入理解C++中数组名的常量指针特性:为何数组名不可被赋值? 一、数组名的表象与本质在C++中,当我们声明一个数组时:cpp int arr[5] = {1, 2, 3, 4, 5};arr看似是一个普通的变量名,但实际它具有独特的双重身份: 作为数组整体标识符:sizeof(arr)返回整个数组的字节大小 作为首元素指针:在表达式中会退化为&arr[0] 这种双重特性正是许多困惑的根源。当我们尝试对数组名进行赋值操作时:cpp arr = new int[10]; // 编译错误!编译器会报错"lvalue required as left operand of assignment"。要理解这个错误,必须深入数组名的底层实现。二、数组名的常量指针本质1. 内存布局视角数组在内存中是连续的存储块,假设arr位于地址0x1000:0x1000: [1] // arr[0] 0x1004: [2] // arr[1] ... 0x1014: [5] // arr[4]arr本质上是一个编译期确定的常量地址值(0x1000),这个地址在程序运行期间不可改变。就像数字5不能被赋值一样:cpp 5 = 10; // 同理的错误2.... 2025年08月07日 6 阅读 0 评论