| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 786 人关注过本帖
标题:还是请教小代码,一眼就看完,不长!
只看楼主 加入收藏
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
结帖率:76.92%
收藏
已结贴  问题点数:5 回复次数:10 
还是请教小代码,一眼就看完,不长!
#include "stdio.h"

int *max(int *pa);        /*声明函数*/
int *max(int *pa){        /*定义函数*/

   int x,y;
   printf("Please enter two number:\n");
   scanf("%d%d",&x,&y); /***声明两个变量,用于保存用户输入的两个值***/

   if(x>y) {pa=&x;return pa;}
   else {pa=&y;return pa;}    /****比较两个值的大上,保存较大值,并返回*****/
}      /********************函数到此结束*************************/

main(){
int *pa;
int *mm; /****声明两个指针变量,其中变量pa用于存放调用函数后的返回值****/
         /****并且将pa值另存入于变量m中*********************************/
         /****将变量取名于mm,完全是引起大家对此变量的注意**************/

printf("The big number is:%d\n",*(mm=max(pa))); /*显示大值*/
printf("The big number is:%d\n",*mm);           /*显示大值*/
  
getch();
}
现在的问题是,两次调用的printf所显示的值,是否一样??并请解释!









谢谢!
搜索更多相关主题的帖子: 代码 
2010-07-05 21:02
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
#include "stdio.h"
int *max(int *pa);        /*声明函数*/
int x,y;//关键在这里如果在子函数中定义x,y出了子函数x,y值就丢失,你的方法如果在vc6.0中第一个输出就不对
int *max(int *pa)
{        /*定义函数*/

   
   printf("Please enter two number:\n");
   scanf("%d%d",&x,&y);

   if(x>y)
   {
       pa=&x;
       return pa;
   }
   else
   {
       pa=&y;
       return pa;
   }   
}   

int main(void)
{
    int *pa;
    int *mm;
   
    printf("The big number is:%d\n",*(mm=max(pa))); /*显示大值*/
    printf("The big number is:%d\n",*mm);           /*显示大值*/
  
getch();
}
2010-07-05 21:32
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
没用过VC6.0,是否可以按原来试验一下?看第一个printf("The big number is:%d\n",*(mm=max(pa))); 能否显示,谢谢你了。

我没有安装VC,谢谢!
盼复!!
2010-07-05 21:59
madao
Rank: 2
等 级:论坛游民
帖 子:11
专家分:14
注 册:2010-6-30
收藏
得分:0 
#include "stdio.h"

int *max(int *pa);        /*声明函数*/
int *max(int *pa)
{        /*定义函数*/

   int x,y;
   printf("Please enter two number:\n");
   scanf("%d%d",&x,&y); /***声明两个变量,用于保存用户输入的两个值***/

   if(x>y) {pa=&x;return pa;}
   else {pa=&y;return pa;}    /****比较两个值的大上,保存较大值,并返回*****/
}      /********************函数到此结束*************************/

main()
{
int *pa;
int *mm; /****声明两个指针变量,其中变量pa用于存放调用函数后的返回值****/
         /****并且将pa值另存入于变量m中*********************************/
         /****将变量取名于mm,完全是引起大家对此变量的注意**************/

printf("The big number is:%d\n",(mm=*max(pa))); /*显示大值*/
//printf("The big number is:%d\n",mm=*max(pa));
printf("The big number is:%d\n",mm);           /*显示大值*/

  
getch();
}
2010-07-05 23:39
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:353
专家分:222
注 册:2006-4-11
收藏
得分:0 
代码写的比较奇怪,直接在main里使用int pa;然后在max里将值赋给pa不就可以了?

2010-07-10 21:04
灯、、
Rank: 4
等 级:业余侠客
威 望:2
帖 子:142
专家分:288
注 册:2010-6-21
收藏
得分:5 
回复 3楼 mashrb
第一个不可以输出结果,我用的是VC++6.0环境
2010-07-10 21:29
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
因为我当时想验证一个理论:永远不会返回指向于某一函数的局部变量的指针。所以把pa指向于一个局部变量,然后再返回这个指针,看看会怎么样。
2010-07-10 21:30
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:353
专家分:222
注 册:2006-4-11
收藏
得分:0 
- - 栈都没了,指针早跑了

2010-07-10 21:31
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
以下是引用灯、、在2010-7-10 21:29:15的发言:

第一个不可以输出结果,我用的是VC++6.0环境



我用的是MinGW,两行的结果都可以输出来,但是输出结果不一样,并且第一个的结果是正确的,也就是说第一个输出的结果能够把较大值选出来,但是第二个显示的结果是一大串数字,不知道是什么。

20100710212943734.rar (5.62 KB)


[ 本帖最后由 mashrb 于 2010-7-10 21:35 编辑 ]
2010-07-10 21:32
灯、、
Rank: 4
等 级:业余侠客
威 望:2
帖 子:142
专家分:288
注 册:2010-6-21
收藏
得分:0 
你想这啥程序啊,根本就不是这么写的啊
2010-07-10 22:03
快速回复:还是请教小代码,一眼就看完,不长!
数据加载中...
 
   



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

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