我知道,如果我使用指向常量字符串的全局指针:
const char *h = "hello";
变量 h 存储在可写数据段中。但是,如果我使用
指向字符串的常量指针
char * const h = "hello";
或指向常量字符串的常量指针
const char * const h = "hello";
那么h将存储在哪里?
答案 0 :(得分:2)
c ++语言没有指定不同存储区域之间的区别,除了这两个变量具有静态存储持续时间。在一个系统上,它们可能存储在同一区域,而在另一系统上则存储在不同的区域。
鉴于在后一种情况下变量是const,语言实现可能选择使用受保护以防止覆盖的内存区域。
答案 1 :(得分:0)
首先,您一直说指向 string 的指针,这并不准确。它们都是指向 char 的指针,而此char是字符串的开头。
对于您的问题,h
是常量指针时将存储在哪里?,它将存储在RAM的只读部分中。就像任何常量const int一样。