鱼C论坛

 找回密码
 立即注册
查看: 2378|回复: 3

指针作为函数参数,函数没有返回值,主函数如何调用

[复制链接]
发表于 2017-7-21 13:56:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/* 输入两个整数a和b,按先大后小的顺序输出(利用函数实现)*/

#include <stdio.h>

void main ()

{
        int a,b;
        int *pointer1,*pointer2;
        void swap(int *pointer1,int *pointer2);

        printf("Please input two int numbers :\n");
        scanf("%d,%d",&a,&b);

        pointer1 = &a;
        pointer2 = &b;

        if(a<b)
        {
                swap(pointer1,pointer2);
        }

        printf("a = %d, b = %d\n",a,b);
        printf("%d > %d\n",*pointer1,*pointer2);
}


void swap(int *pointer1,int *pointer2)
{
        int *p;
       

        p = pointer1;
        pointer1 = pointer2;
        pointer2 = p;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-21 14:51:56 | 显示全部楼层
2017-07-21_145031.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-21 15:43:34 | 显示全部楼层

运行完之后结果是错误的,加入输入3,4,结果会输出3>4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-21 16:12:16 | 显示全部楼层
本帖最后由 ba21 于 2017-7-21 16:15 编辑
fyt110 发表于 2017-7-21 15:43
运行完之后结果是错误的,加入输入3,4,结果会输出3>4


你这个swap里面的pointer1,pointer2 是形参,是局部指针,只能修改它指向的值,

帮你改下代码如下,看你好不好理解:
  1. #include <stdio.h>

  2. void main ()

  3. {
  4.         int a,b;
  5.         int *pointer1,*pointer2;
  6.         void swap(int *x,int *y);

  7.         printf("Please input two int numbers :\n");
  8.         scanf("%d,%d",&a,&b);

  9.         pointer1 = &a;
  10.         pointer2 = &b;

  11.         if(a<b)
  12.         {
  13.                 swap(pointer1,pointer2);
  14.         }

  15.         printf("a = %d, b = %d\n",a,b);
  16.         printf("%d > %d\n",*pointer1,*pointer2);
  17. }


  18. void swap(int *x,int *y)
  19. {
  20.         int *p;
  21.         

  22.         p = x;
  23.         x = y;
  24.         y = p;
  25. }
复制代码


修改指向值的代码 如下:
  1. #include <stdio.h>

  2. void main ()

  3. {
  4.         int a,b;
  5.         int *pointer1,*pointer2;
  6.         void swap(int *x,int *y);

  7.         printf("Please input two int numbers :\n");
  8.         scanf("%d,%d",&a,&b);

  9.         pointer1 = &a;
  10.         pointer2 = &b;

  11.         if(a<b)
  12.         {
  13.                 swap(pointer1,pointer2);
  14.         }

  15.         printf("a = %d, b = %d\n",a,b);
  16.         printf("%d > %d\n",*pointer1,*pointer2); //或 printf("%d > %d\n",a,b);
  17. }


  18. void swap(int *x,int *y)
  19. {
  20.         int temp;
  21.         

  22.         temp = *x;
  23.         *x = *y;
  24.         *y = temp;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 20:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表