C语言,字符串指针指向的字符串,那个字符串存储在哪个位置?
你要位置,把内存地址都给你打印出来了。然后你怎么又牵扯到常量了?动态申请的变量(即malloc函数申请的变量)存放在堆区!
idxbuf=malloc(6*sizeof(char));
动态随机分配内存空间,共6个char型数据大小的空间,因为是随机的,idxbuf指针指向的内存空间的起始地址在后面的语句中打印出来:
printf("before idxbuf address:%p,idxbuf:%s\n\n",&idxbuf,
&idxbuf:取地址,%p与指针对应,是输出指针的地址。
address:0x7ffeffc9f0b0,就是字符串指针idxbuf指向的字符串存储在内存中的地址位置。
你要字符串指针idxbuf的随机分配的地址,只需要
printf("before idxbuf address:%p\n",&idxbuf);
这一语句就可以了,原来的程序编译有点问题,修改之后通过:
运行结果:
程序先编译后链接,转换成0与1的机器代码后调入内存运行。这个问题被你牵扯到程序运行的内存分配方式,而不是你所说的想找字符串在内存中的地址。请用内存分配方式详解提问!
简单的说,一个程序调入内存后,在内存中分为以下5个部分。
1、栈区(stack)
2、堆区(heap)
3、全局区(静态区)
4、文字常量区
5、程序代码区
内存分配详细不说了,
因为我已经很明确的根据提问回答了字符串存储的位置:address:0x7ffeffc9f0b0。
那么就是说那个字符串不是在常量区吗?