【发布时间】:2020-03-25 18:22:22
【问题描述】:
我知道如果我使用指向常量字符串的全局指针:
const char *h = "hello";
变量h存储在可写数据段中。但是如果我使用
指向字符串的常量指针
char * const h = "hello";
或指向常量字符串的常量指针
const char * const h = "hello";
那么 h 将存储在哪里?
【问题讨论】:
-
请记住,常量指针必须在声明时初始化,因为没有其他机会为它们赋值。
-
给定
const char * const h = …,C 实现可以将h存储在只读部分或可写部分中。如果声明出现在函数内部,实现通常会将其存储在堆栈中。由于堆栈的性质,它必须是可写的。给定声明const char *h = …,如果编译器可以确定h永远不会被修改,它可能仍将h存储在只读部分中。 -
char * const h = "hello";不再在 C++ 中编译,因为我认为是 C++11。
标签: c++ c string pointers constants