| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1039 人关注过本帖
标题:请问这几句赋值有什么区别吗??很短!
只看楼主 加入收藏
c我我c
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-7-9
收藏
得分:0 
y="a";
是错的,哪能把一个字符赋给一个二级指针呢
*s='a';
是s[0]==a
*(s+2)='a';
是s[3]==a
2010-07-09 15:06
Jade0709
Rank: 2
等 级:论坛游民
帖 子:14
专家分:15
注 册:2010-7-6
收藏
得分:0 
我想错了,y="a",确实是将字符常量的地址赋给y,即y的指向变了。
2010-07-09 15:58
Jade0709
Rank: 2
等 级:论坛游民
帖 子:14
专家分:15
注 册:2010-7-6
收藏
得分:0 
以下是引用c我我c在2010-7-9 15:06:16的发言:

y="a";
是错的,哪能把一个字符赋给一个二级指针呢
*s='a';
是s[0]==a
*(s+2)='a';
是s[3]==a
y是一级指针,y="a"也没有错。
2010-07-09 16:00
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:353
专家分:222
注 册:2006-4-11
收藏
得分:0 
以下是引用Jade0709在2010-7-9 15:05:52的发言:

呵呵,那么请问本例中y指向啥的,看看main函数中的初始化吧。y="a",这个语句y的指向是没有变的,函数传过来的y就是指向一个字符串空间的,y="a",只是把字符串"a"复制到此空间。
呵呵,非也非也,这不是c++有操作符啊。
y是一个char*的指针,当然什么型不是我们讨论的,总之它是一个指针,指针是要指向地址的,
你可以打印一下y的数值是否变化,在y="a"的前后,y的值是不一样的,如果照你所说的把"a"复制到这个空间的话那么y这个值应该是不会变的
顺便一提你也可以试试对于*y是否可以赋值

2010-07-09 16:19
Jade0709
Rank: 2
等 级:论坛游民
帖 子:14
专家分:15
注 册:2010-7-6
收藏
得分:0 
以下是引用hao0716在2010-7-9 16:19:11的发言:

呵呵,非也非也,这不是c++有操作符啊。
y是一个char*的指针,当然什么型不是我们讨论的,总之它是一个指针,指针是要指向地址的,
你可以打印一下y的数值是否变化,在y="a"的前后,y的值是不一样的,如果照你所说的把"a"复制到这个空间的话那么y这个值应该是不会变的
顺便一提你也可以试试对于*y是否可以赋值
是的,我说错了,前面已经说过。
2010-07-09 16:42
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
收藏
得分:0 
其实这个问题挺让人犯迷糊的,假如你改成*y='b',那么结果完全两样,你去看好了,当y="a"的时候,y的地址是没变,但y地址中存储的地址是改变了,而出了函数体,y中存储的地址又恢复成原来的地址,仿佛y="a"这句从没写过。如果你写成*y = 'a',那么你就是把y指向字符串的首地址的内容改变了,那么这时候s也会随之改变。
2010-07-09 17:27
快速回复:请问这几句赋值有什么区别吗??很短!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020062 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved