主题:[讨论]新手请教一个关于指针的问题
yizhixiaowoniu
[专家分:0] 发布于 2011-04-19 17:06:00
如果我用一个指针直接指向一字符串的首个地址
如:char*p;
p="zhizhen";printf("%s\n",p);这里的p前面不加*号!
但是我要是这样:
char*p;
char juzi[]="zhizhen";
p=juzi;
printf(“%s\n”,*p);这里的p就要加一个* 号,这是为什么呢,谁能详细的解释一下?求教了!
回复列表 (共11个回复)
沙发
塞北长风 [专家分:60] 发布于 2011-04-19 17:38:00
第一个指针p的地址为"zhizhen",内容为空,所以输出p的地址就行了,不用加*。
而第二个指针p的地址是数组juzi[]的首地址,内容为"zhizhen",所以输出时应输出内容,所以要加*
板凳
塞北长风 [专家分:60] 发布于 2011-04-19 17:38:00
第一个指针p的地址为"zhizhen",内容为空,所以输出p的地址就行了,不用加*。
而第二个指针p的地址是数组juzi[]的首地址,内容为"zhizhen",所以输出时应输出内容,所以要加*
3 楼
fragileeye [专家分:1990] 发布于 2011-04-19 18:01:00
加‘*’后*p还表示地址?!!!还能用%s输出?!
5 楼
bruceteen [专家分:42660] 发布于 2011-04-20 08:17:00
不会吧,难道我还没睡醒?
第二个也不应该加*
7 楼
cgl_lgs [专家分:21040] 发布于 2011-04-21 10:48:00
[quote]
第二个不要加啊
[/quote]
当然不要。。。。
8 楼
wukaikailive [专家分:80] 发布于 2011-04-23 21:17:00
为什么不加,我觉得要加吧,后面那代码取的是数组中的值
9 楼
wukaikailive [专家分:80] 发布于 2011-04-23 21:17:00
为什么不加,我觉得要加吧,后面那代码取的是数组中的值
10 楼
sclm1221 [专家分:0] 发布于 2011-04-23 21:46:00
第二个不要加吧,怎么这多人说要加,%s对应的是指针,加*号后代表那个字符串,语法都错误了,怎么运行出来
我来回复