鱼C论坛

 找回密码
 立即注册
查看: 3411|回复: 7

指针的问题

[复制链接]
发表于 2012-5-12 19:52:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include "stdio.h"
void main()
{
    char *s="good bye";
    s=s+3;
    printf("%s\n",s);  
}

s我理解为指向d的指针,是个地址,输出结果为什么是“d bye”?
我不明白为什么输出函数里s不加* 、 (不是加星花才能取到内容么?)
求教高手!!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-12 21:00:57 | 显示全部楼层
等高手解答。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-12 21:12:42 | 显示全部楼层
本帖最后由 何辉海 于 2012-5-12 21:17 编辑

这个题目经过了简单的指针运算。比如:
char *s = "1234";
printf ("%s",s);


输出  1234

输出指针指向的字符串(此时指针指向 字符1 的首地址),字符串以 \0结尾。

当 s += 3时,指针后推三个位置,即指向4,所以会输出 “4”.


指针这个东西自己多看书,多百度,多练。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-12 22:10:41 | 显示全部楼层
为什么不用加‘ * ’,这里取决于格式控制符‘%s’,它告诉函数printf要输出一个以‘\n’结尾的字符串,只需要提供给printf一个指向该字符串(也可以说是字符数组)的首地址即可,那么就可以输出从这个首地址到'\n'的所有字符,这取决于printf的内部实现
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-13 06:36:53 | 显示全部楼层
三楼四楼正解  
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-13 21:02:24 | 显示全部楼层
多谢三楼!长见识了{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-13 22:02:51 | 显示全部楼层
printf("%s\n",s); 用%d
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-13 22:09:23 | 显示全部楼层
因为你的指针指向一个字符串,输出字符串只要输出首地址即可,如果指向是一个数,比如说一个整形变量
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 06:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表