c语言用指针定义字符串常量问题

我看资料不是说使用指针定义字符串常量时,如果字符串常量相同时,指针指向的地址也是同一个内存地址。但是下面的程序我运行之后,结果并不是相同的地址。#include<stdi... 我看资料不是说使用指针定义字符串常量时,如果字符串常量相同时,指针指向的地址也是同一个内存地址。但是下面的程序我运行之后,结果并不是相同的地址。

#include <stdio.h>
int main()
{
char *nam1="hello";
char *nam2="hello";
char *nam3="hello";
printf("%p\n%p\n%p\n",&nam1,&nam2,&nam3);
return 0;
}

结果
0x7fff4feb9c38
0x7fff4feb9c30
0x7fff4feb9c28
展开
 我来答
云淡风轻in苏州
2014-11-25 · TA获得超过599个赞
知道小有建树答主
回答量:418
采纳率:0%
帮助的人:555万
展开全部
有思考~真不错~
你试试printf("%p\n%p\n%p\n",nam1,nam2,nam3);
就是把取地址符去掉,这样就是打印的常量字符串的地址了。

你打印出来的是新生成的三个指针变量的地址,确实不同;三个指针变量指向的地址确实是相同的(也就是常量字符串的地址),概念混淆了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式