我知道,如果我使用指向常量字符串的全局指针:
const char *h = "hello";变量h存储在可写数据段中。但如果我用
指向字符串的常量指针
char * const h = "hello";或指向常量字符串的常量指针。
const char * const h = "hello";那他会被存放在哪里?
发布于 2019-11-30 14:08:40
c++语言没有指定不同存储区域之间的区别,除了这两个变量都具有静态存储时间之外。在一个系统中,它们可能存储在同一区域,在另一个系统中存储在不同的区域。
考虑到变量在后一种情况下是const,语言实现可能会选择使用一个被保护不被覆盖的内存区域。
发布于 2019-11-30 14:10:28
首先,您一直说指向字符串的指针是不准确的。它们都是指向 char 的指针,这个字符是字符串的开头。
对于您的问题,当h是一个常量指针时,它将存储在哪里?,它将存储在内存的只读部分中。就像任何常数变量,如constant。
https://stackoverflow.com/questions/59116889
复制相似问题