我想在 C 中获取字符串常量的地址。
char * const MYCONST = "StringString";
据我所知,常量被“保存”在内存的文本/代码段中。当我尝试获取 MYCONSt 中第一个元素的地址时:
printf("%p\n",&(MYCONST));
结果我得到 0x7fff15342e28,它在堆栈中而不是在文本/代码段中。任何人都可以帮我获取C中字符串常量的地址吗?
//编辑到目前为止我找不到正确的答案:当我写
char * const MYCONST1 = "StringString";
printf("Address of MYCONST1: %p\n",MYCONST1);
char * const MYCONST2 = "StringString";
printf("Address of MYCONST2: %p\n",(void*)MYCONST2);
这是输出:
MYCONST1 的地址:0x400b91
MYCONST2 的地址:0x400b91
但是它们应该有不同的地址,因为它们是不同的常数。当结果的长度为 7 而不是 0x7fffa5dd398c 像语言环境变量时,谁能解释我。
谢谢!