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

/*使用函数将字符串逆序输出*/
#include<stdio.h>
#include<string.h>
void myf(char *p);
main()
{
char a[80];
gets(a);
myf(a);
printf("\n");
puts(a);
getch();
}

void myf(char *p)
{
char *q,t;
q=p+(strlen(p)-1); /*q指针指向数组的最后一个元素的地址*/
while(p<q)
{
t=*p;*p=*q;*q=t; /*首尾元素交换位置*/
p--;q++;
}
我在win-tc上运行编译可以成功,运行时就会出现一个和cpu有关的问题!!郁闷!!

搜索更多相关主题的帖子: 指针 函数 
2006-09-16 11:52
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用小林在2006-9-16 11:52:50的发言:

/*使用函数将字符串逆序输出*/
#include<stdio.h>
#include<string.h>
void myf(char *p);
main()
{
char a[80];
gets(a);
myf(a);
printf("\n");
puts(a);
getch();
}

void myf(char *p)
{
char *q,t;
q=p+(strlen(p)-1); /*q指针指向数组的最后一个元素的地址*/
while(p<q)/*反了 是p>q*/
{
t=*p;*p=*q;*q=t; /*首尾元素交换位置*/
p--;q++;
}
我在win-tc上运行编译可以成功,运行时就会出现一个和cpu有关的问题!!郁闷!!

2006-09-16 13:35
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
while(p&lt;q)!!!!!!!!!!!!!!!

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-16 13:37
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
都不是

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-16 13:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

应该是在函数体里改动了p的地址,才有这样的情况.


倚天照海花无数,流水高山心自知。
2006-09-16 13:49
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

刚才一直在想我的那个程序
没仔细看 试都没试就帖出去了
不好意思

2006-09-16 13:57
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
改到没什么,象char *p=s[4];
p++;这都正常
但是不能指针相互比较大小
指针只能++ -- ==
这样的运算
* / < > 都不行
非常不稳定,好的编译器就是错误

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-16 15:24
小林
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-9-7
收藏
得分:0 
请指教以下,不用指针的地址比较(p<q)
,那应该怎么做???

2006-09-16 15:41
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

照你的思路
while(p!=q||p+1!=q)
这种写法头一次啊
感觉很.....


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-16 15:47
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
i=0,j=strlen(p)-1;
while(i<j)
{
t=*(p+i),*(p+i)=*(p+j),*(p+j)=t;
i++,j--;
}

倚天照海花无数,流水高山心自知。
2006-09-16 16:06
快速回复:函数调用指针的问题????
数据加载中...
 
   



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

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