【发布时间】:2013-10-12 11:23:29
【问题描述】:
我想获取 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 时,谁能解释我。
谢谢!
【问题讨论】: