| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 862 人关注过本帖
标题:指针问题
只看楼主 加入收藏
wskanss
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-9-19
收藏
 问题点数:0 回复次数:19 
指针问题

char *getstring(void)
{
char *P = "aaaaaaaa";
return p;
}
void main(void)
{
char *q=NULL;
q=getsring(void);
printf("%s",q);
}

分析一下;为什么没有正确结果出来。
我认为P为指针常量,在静态存储区,传过来前是不会消失的。
结果应该是正确的啊,
看到一种解释说返回的始终只是同一个“只读”内存块,什么意思???

搜索更多相关主题的帖子: 指针 
2006-10-12 20:05
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
正确呀!
char *getstring()
{
char *p = "aaaaaaaa";
return p;
}
void main(void)
{
char *q=NULL;
q=getstring();
printf("%s",q);
}

=×&D o I p R e E n C g T l X&×=
2006-10-12 20:10
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
char *q=NULL;//
NULL是0存储空间,不要用
改成 char *q; 就可以了

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-12 20:11
wskanss
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-9-19
收藏
得分:0 
不是吧,我在win-TC跟turb c上运行都不对。
char *q=NULL;这样只是赋个初值可以防止滥用啊
2006-10-12 20:14
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
函数调用时
q=getsring(void);//怎么还有void
q=getstring();

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-12 20:16
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
上面的程序是小写的写成大写. 函数又少写.

=×&D o I p R e E n C g T l X&×=
2006-10-12 20:16
wskanss
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-9-19
收藏
得分:0 

re: 函数调用时
q=getsring(void);//怎么还有void
q=getstring();

我觉得这样规范些吧,从一本书上看来的

2006-10-12 20:20
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

如果除了那个是笔误,那就没错了

[此贴子已经被作者于2006-10-12 20:21:18编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-12 20:20
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
你的函数原形已有void, 调用是不用void.
不原就两个void都不写.
char *getstring(void)
{
char *p = "aaaaaaaa";
return p;
}
void main(void)
{
char *q=NULL;
q=getstring(void);
printf("%s",q);
}

象这样编译器会报错.

=×&D o I p R e E n C g T l X&×=
2006-10-12 20:26
wskanss
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-9-19
收藏
得分:0 
不信大家去运行试一下,
char *getstring(void)
{
char *p = "aaaaaaaa";
return p;
}
void main(void)
{
char *q = NULL;
q = getsring(void);
printf("%s",q);
}
这个也一样啊,都没结果,什么也没有,还有一次运行结果乱码。
又运行有一次编译报错。
2006-10-12 20:27
快速回复:指针问题
数据加载中...
 
   



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

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