标题:这段程序为什么不对
只看楼主
longxies
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2007-11-14
 问题点数:0 回复次数:7 
这段程序为什么不对
main()
{
 char a[10],*p=a;
 p="123456789";
 printf("%s",a);
}
p是a的指针,给p赋值就是给a赋值为什么输出乱码呢?
搜索更多相关主题的帖子: 赋值 main char printf 
2008-02-01 10:28
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
得分:0 
这个语句不对:
p="123456789";
p只是一个指针,没有给它分配内存空间,
你把字符串赋值给它,
它是没地方放的,所以会输出乱码。

2008-02-01 11:17
longxies
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2007-11-14
得分:0 
p是a[10]的指针,给p赋值就是给a赋值,它的值存于a中,p="123456789";,赋值并没错啊!!
2008-02-02 15:54
chmlqw
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-10-11
得分:0 
P是指针,是地址
而"123456789"是指针的指向的内容
所以不能把内容赋值给指针...
2008-02-02 19:01
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
[bo]以下是引用 [un]chmlqw[/un] 在 2008-2-2 19:01 的发言:[/bo]

P是指针,是地址
而"123456789"是指针的指向的内容
所以不能把内容赋值给指针...

你错了,p="123456789"在语法上是可以的,
"123456789"相当于一个数组名,
p = 数组名; 就是把数组首地址给p
但要注意,a的内容并没有变
2008-02-02 19:26
hongwu147
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-2-2
得分:0 
给p赋值,应该这样
*p=123456789
2008-02-02 19:30
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
[bo]以下是引用 [un]hongwu147[/un] 在 2008-2-2 19:30 的发言:[/bo]

给p赋值,应该这样
*p=123456789

这是给p所指向的空间赋值,而不是给p
2008-02-02 19:37
longxies
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2007-11-14
得分:0 
[bo]以下是引用 [un]雨中飞燕[/un] 在 2008-2-2 19:26 的发言:[/bo]


你错了,p="123456789"在语法上是可以的,
"123456789"相当于一个数组名,
p = 数组名; 就是把数组首地址给p
但要注意,a的内容并没有变

谢谢我明白了
程序中我先后用了两个p=a,p="123456789"相当于给p指针变量副了两次值,a[10]我只是定义了没赋值是吗???

[[it] 本帖最后由 longxies 于 2008-2-2 20:10 编辑 [/it]]
2008-02-02 20:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-199251-1-1.html




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

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