在 C++ 中,常量數組和普通數組的主要區別在于它們的可修改性
const int const_arr[] = {1, 2, 3}; // 常量數組
int arr[3]; // 普通數組
const_arr[0] = 4; // 錯誤!常量數組的元素不能被修改
arr[0] = 4; // 正確,普通數組的元素可以被修改
存儲位置:常量數組通常存儲在只讀內存區域,而普通數組存儲在可讀寫的內存區域。這意味著試圖修改常量數組的元素會導致編譯錯誤或運行時錯誤,而修改普通數組的元素則是安全的。
作為函數參數:當將數組作為函數參數傳遞時,普通數組會退化為指向其第一個元素的指針,而常量數組會退化為指向其第一個元素的常量指針。例如:
void func(int arr[]) {
// 在這里,arr 實際上是一個指向整數的指針
}
void func(const int const_arr[]) {
// 在這里,const_arr 實際上是一個指向常量整數的指針
}
總之,常量數組和普通數組的主要區別在于常量數組的元素是只讀的,而普通數組的元素可以被修改。此外,常量數組通常存儲在只讀內存區域,而普通數組存儲在可讀寫的內存區域。