关于c语言中字符串指针变量的问题

main(){char*ps="thisisabook";intn=10;ps=ps+n;printf("%s\n",ps);}最后输出结果竟然是book这个让我不明白p... main()
{
char *ps="this is a book";
int n=10;
ps=ps+n ;
printf("%s\n",ps);
}
最后输出结果竟然是book
这个让我不明白
ps(赋值以后依然是指针变量 还是字符串的首地址 ) 可是以字符串的形式输出以后竟然是原来字符串book 应该是地址转换为字符串怎么还是book 这到底是不是地址转换成字符串的表现
如果是 那请高手告诉我是如何转换的
我看了大家的回答
我想是我问得不清楚
我是好奇
字符串指针变量(字符串的首地址) 以字符串形式输出以后为什么会和 字符串指针变量的内容是一样的
展开
 我来答
吉祥二进制
高粉答主

推荐于2016-05-04 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84583

向TA提问 私信TA
展开全部
ps指向"this is a book"的首地址,即第一个元素,但是指针有一个运算就是 加法运算,
ps + 1 就是 ps的地址 + sizeof(Char) , 后面的sizeof(char)就是偏移地址,C++只所以提供指针的加法运算,这与汇编语言中的offset是一样的。 ps = ps + 10; 就相当于 ps + sizeof(char) * 10,就是加10个字符的地址,它的内容就是字符'b' 没事可以到0x30 百度贴吧 耍耍,这些都是很基础的东西哦。
cdyzxy
2013-02-28 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3762万
展开全部
这里没有类型转换的内容,指针就是存放地址的,
你执行char *ps="this is a book"语句时,系统将字符串第1个地址存放
到ps变量中,后面让这个地址自加10个字节,于是地址是字符串中b的地址.
printf语句的意思就是打印从某个地址开始的字符串,直到字符串结尾.
无论ps指向字符串还是其他的数据类型,printf都会把这个地址开始的数据
当成字符串来打印.
字符串指针变量的意思就是你在ps=ps+n;时加的是n个字符的地址,如果
ps定义成int *型的,假设int占4个字节,ps=ps+n;那么ps中存放的地址就会
加10*4而不是10*1了.
总之,字符型指针不一定就指的是字符,它指向谁不会有强制类型转换的
动作发生.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
未来需努力点缀
2013-02-28 · TA获得超过4679个赞
知道大有可为答主
回答量:850
采纳率:50%
帮助的人:533万
展开全部
楼主你好

字符指针ps赋值后是字符串"this is a book"的首地址 也就是说此时ps指向第一个字符't'
*ps就是't'

n=10;
ps=ps+n;
就是使指针ps指向字符串"this is a book"的第11个字符 也就是'b'

那么
printf("%s\n",ps);
就是输出以ps为首的 以'\0'结束的字符串"book"

希望能帮助你哈
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
home莫雨
2013-02-28
知道答主
回答量:6
采纳率:0%
帮助的人:9005
展开全部
字符指针ps赋值后是字符串"this is a book"的首地址 也就是说此时ps指向第一个字符't'
*ps就是't'
n=10;
ps=ps+n;
就是使指针ps指向字符串"this is a book"的第11个字符 也就是'b'
那么
printf("%s\n",ps);
就是输出以ps为首的 以'\0'结束的字符串"book"
ps 是一个指针,指向那个字符串,后来指针+10,所以就指到了后面的字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zongwei1988
2013-03-01
知道答主
回答量:13
采纳率:0%
帮助的人:10.1万
展开全部
这个指针型变量的内容并不是"this is a book" 而是"this is a book"的第一个字符的地址付给ps,在print的时候,系统先输出它所指向的第一个字符数据,然后自动使ps加1,直到'\0'结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式