鱼C论坛

 找回密码
 立即注册
查看: 2610|回复: 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 是形参,是局部指针,只能修改它指向的值,

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

void main ()

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

        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 *x,int *y)
{
        int *p;
        

        p = x;
        x = y;
        y = p;
}

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

void main ()

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

        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); //或 printf("%d > %d\n",a,b);
}


void swap(int *x,int *y)
{
        int temp;
        

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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