| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1120 人关注过本帖
标题:关于数组指针的问题,请高手指教
只看楼主 加入收藏
liujia586
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
 问题点数:0 回复次数:16 
关于数组指针的问题,请高手指教
下面程序为教材上的程序,为什么在vc++不能运行啊?还有*p='\0';/*为什么会是这样写,这不就表示第一个元素是'\n',怎么能输出呢*/

程序代码:
#include <stdio.h>
void main()
{
char *p="How do you do",*q="Iam a student";
for(;*q!='\0';)
*p++=*q++;
*p='\0';/*为什么会是这样写,这不就表示第一个元素是'\0',怎么能输出呢*/
printf("%s\n",p);
}


[ 本帖最后由 liujia586 于 2011-2-16 17:37 编辑 ]
搜索更多相关主题的帖子: color 元素 
2011-02-16 16:42
liujia586
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
怎么没人啊
2011-02-16 16:52
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
这里相当于const char *p="How do you do",*q="Iam a student";
慢慢你知道发生什么事

小代码,大智慧
2011-02-16 17:23
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
收藏
得分:0 
*p怎么可以直接被赋值?有没有搞错啊
2011-02-16 17:25
liujia586
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
回复 4楼 lyj23
当然可以啊
2011-02-16 17:35
CCFzeroOH
Rank: 2
等 级:论坛游民
帖 子:79
专家分:85
注 册:2009-12-22
收藏
得分:0 
你的代码有错误
p指向文字常量区,不能再对p进行修改了

还有对于你的问题
for(;*q!='\0';)
*p++=*q++;
p进行了自加
这时p指向的是最后一个字符的地址
2011-02-16 18:42
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
p都被你移到最后了,当然什么都输出不了了
2011-02-16 19:11
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
应该是这样的
#include <stdio.h>
void main()
{
char *head;
char *p="How do you do",*q="Iam a student";
head=p;保留头指针,在指针移位中很重要
for(;*q!='\0'&&*p!='\0';)防止越界,虽然这个程序不会,但要有好的编程习惯

    *p=*q;最好分开写,逻辑更清晰
    p++;
    q++;

*p='\0';/*p已经被你++到后面了,*p已经不是第一个值了*/
printf("%s\n",head);
}
2011-02-16 19:16
liujia586
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
谢谢啊
2011-02-16 19:34
liujia586
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
回复 8楼 韩明海
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-02-16 19:41
快速回复:关于数组指针的问题,请高手指教
数据加载中...
 
   



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

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