回 帖 发 新 帖 刷新版面

主题:[讨论]新手请教一个关于指针的问题

如果我用一个指针直接指向一字符串的首个地址
如:char*p;
 p="zhizhen";printf("%s\n",p);这里的p前面不加*号!
但是我要是这样:
char*p;
char juzi[]="zhizhen";
p=juzi;
printf(“%s\n”,*p);这里的p就要加一个* 号,这是为什么呢,谁能详细的解释一下?求教了!

回复列表 (共11个回复)

沙发

第一个指针p的地址为"zhizhen",内容为空,所以输出p的地址就行了,不用加*。
而第二个指针p的地址是数组juzi[]的首地址,内容为"zhizhen",所以输出时应输出内容,所以要加*

板凳

第一个指针p的地址为"zhizhen",内容为空,所以输出p的地址就行了,不用加*。
而第二个指针p的地址是数组juzi[]的首地址,内容为"zhizhen",所以输出时应输出内容,所以要加*

3 楼

加‘*’后*p还表示地址?!!!还能用%s输出?!

4 楼

了然,谢了阿,恍然大悟阿

5 楼

不会吧,难道我还没睡醒?
第二个也不应该加*

6 楼


第二个不要加啊

7 楼

[quote]
第二个不要加啊
[/quote]
当然不要。。。。

8 楼

为什么不加,我觉得要加吧,后面那代码取的是数组中的值

9 楼

为什么不加,我觉得要加吧,后面那代码取的是数组中的值

10 楼

第二个不要加吧,怎么这多人说要加,%s对应的是指针,加*号后代表那个字符串,语法都错误了,怎么运行出来

我来回复

您尚未登录,请登录后再回复。点此登录或注册