kindo62 发表于 2020-7-31 16:26:13

C语言,指针

在子程序中,我想调用指针数组里指针所指的原数进行比较,再进行地址交换,可惜调用指针数组里的原数的语法好像不对(标⭐的那一行),有哪位大哥帮我解答一下😭
//例题4.输入a,b,c三个整数,按大小顺序输出
void main()
{
int a,b,c;
int *p_1,*p_2,*p_3;
void compare(int *x,int *y,int *z);
printf("Please input 3 numbers:\n");
scanf("%d %d %d",&a,&b,&c);
p_1=&a;
p_2=&b;
p_3=&c;
compare(p_1,p_2,p_3);
}
void compare(int *x,int *y,int *z)
{
int *a【2】={x,y,z},i,j,*c;
for(i=1;i<3;i++)//冒泡排序
{
for(j=0;j<3-i;j++)
{
if(a【*(j+1)】>a【*j】)//⭐
{
c=a【j】;
a【j】=a【j+1】;
a【j+1】=c;
}
}
}
printf("%d>>%d>>%d",*x,*y,*z);

}

xiaosi4081 发表于 2020-7-31 16:26:59

本帖最后由 xiaosi4081 于 2020-7-31 16:46 编辑

把代码改成这样:
#include<stdio.h>
void compare(int *x, int *y, int *z);
void main()
{
    int a, b, c;
    int *p_1, *p_2, *p_3;

    printf("Please input 3 numbers:\n");
    scanf("%d %d %d", &a, &b, &c);
    p_1 = &a;
    p_2 = &b;
    p_3 = &c;
    compare(p_1, p_2, p_3);
}
void compare(int *x, int *y, int *z)
{
int *a={x,y,z},i,j,*c;
for(i=1;i<3;i++)//冒泡排序
{
      for (j = 0; j < 3 - i; j++)
      {
            if (a > a) //⭐
            {
                c = a;
                a = a;
                a = c;
            }
      }
}
printf("%d>>%d>>%d",a,a,a);
}

永恒的蓝色梦想 发表于 2020-7-31 16:28:21

你 tm 写的什么东西

永恒的蓝色梦想 发表于 2020-7-31 16:32:20

xiaosi4081 发表于 2020-7-31 16:26
把代码改成这样:

越改越离谱

xiaosi4081 发表于 2020-7-31 16:37:13

永恒的蓝色梦想 发表于 2020-7-31 16:32
越改越离谱

{:10_250:}

永恒的蓝色梦想 发表于 2020-7-31 16:37:47

按大小顺序输出大小顺序是从大到小还是从小到大啊?

kindo62 发表于 2020-7-31 16:40:41

永恒的蓝色梦想 发表于 2020-7-31 16:37
大小顺序是从大到小还是从小到大啊?

大到小

zltzlt 发表于 2020-7-31 16:41:34

xiaosi4081 发表于 2020-7-31 16:26
把代码改成这样:

你确定这代码能运行?

xiaosi4081 发表于 2020-7-31 16:46:33

zltzlt 发表于 2020-7-31 16:41
你确定这代码能运行?

改了

永恒的蓝色梦想 发表于 2020-7-31 16:48:41

xiaosi4081 发表于 2020-7-31 16:46
改了

依然不能运行。

xiaosi4081 发表于 2020-7-31 16:49:45

永恒的蓝色梦想 发表于 2020-7-31 16:48
依然不能运行。

{:10_266:}

zltzlt 发表于 2020-7-31 16:52:43

把代码改成这样就行了:

#include <stdio.h>
void compare(int *x, int *y, int *z);
int main()
{
    int a, b, c;
    int *p_1, *p_2, *p_3;

    printf("Please input 3 numbers:\n");
    scanf("%d %d %d", &a, &b, &c);
    p_1 = &a;
    p_2 = &b;
    p_3 = &c;
    compare(p_1, p_2, p_3);
    return 0;
}
void compare(int *x, int *y, int *z)
{
    int *a = {x, y, z}, i, j, *c;
    for (i = 1; i < 3; i++) // 冒泡排序
    {
      for (j = 0; j < (3 - i); j++)
      {
            if (*(a) > *(a))
            {
                c = a;
                a = a;
                a = c;
            }
      }
    }
    printf("%d>>%d>>%d", *a, *a, *a);
}

kindo62 发表于 2020-7-31 16:53:29

请问有没有方法可以将指针数组里指针所指的原数进行比较

kindo62 发表于 2020-7-31 16:54:03

{:10_245:}

zltzlt 发表于 2020-7-31 16:54:41

kindo62 发表于 2020-7-31 16:53
请问有没有方法可以将指针数组里指针所指的原数进行比较

见我 12# 的代码
页: [1]
查看完整版本: C语言,指针