常量指针与常量字符串的指针

时间:2019-11-30 14:02:21

标签: c++ c string pointers constants

我知道,如果我使用指向常量字符串的全局指针:

const char *h = "hello";

变量 h 存储在可写数据段中。但是,如果我使用

指向字符串的常量指针

char * const h = "hello";

或指向常量字符串的常量指针

const char * const h = "hello";

那么h将存储在哪里?

2 个答案:

答案 0 :(得分:2)

c ++语言没有指定不同存储区域之间的区别,除了这两个变量具有静态存储持续时间。在一个系统上,它们可能存储在同一区域,而在另一系统上则存储在不同的区域。

鉴于在后一种情况下变量是const,语言实现可能选择使用受保护以防止覆盖的内存区域。

答案 1 :(得分:0)

首先,您一直说指向 string 的指针,这并不准确。它们都是指向 char 的指针,而此char是字符串的开头。

对于您的问题,h是常量指针时将存储在哪里?,它将存储在RAM的只读部分中。就像任何常量const int一样。