机智如我么么哒 发表于 2019-10-9 01:00:49

求助佬,为什么我的代码没有输出值

#include<stdio.h>
       
int main()
{
void fac(int **p,int n);
        int str;
        int i,k;
        int *p1,**p2;
scanf("%d",&k);   //输入有几个数
       
        printf("请输入数字;");
for(i=0;i<k;i++)
        {
                p1=&str;    //将指针数组指向str
        }


for(i=0;i<k;i++)   //给k-1个元素赋值
{
        scanf("%d",str);
}       
       
        p2=p1;   //指向指针的指针p2指向 p1
        fac(p2,k);
        for(i=0;i<k;i++)
        {
                printf("%d ",*p1);
               
        }
        return 0;
       }
void fac(int **p,int n)
{
        int *t,i,j;
        for(i=0;i<n-1;i++)
        {
               
                        for(j=i+1;j<n;j++)
                        {
                                if(**(p+i)>**(p+j))
                               {
                               t=*(p+i);   //将值进行交换
                               *(p+i)=*(p+j);
                               *(p+j)=t;
                        }
                       }
               
       }
}
题目要求用指向指针的指针,输入n个数,将这n个数从小到大排序


我的结果如下
5
请输入数字5 6 4 7 9
然后后面就没有结果,不知道哪里错了

bin554385863 发表于 2019-10-9 01:52:32

本帖最后由 bin554385863 于 2019-10-9 17:39 编辑

谁告诉你函数的声明和定义实在main函数里面进行的?

#include<stdio.h>
      
int main()
{
void fac(int **p,int n);
      int str;
      int i,k;
      int *p1,**p2;
scanf("%d",&k);   //输入有几个数
      
      printf("请输入数字;");
for(i=0;i<k;i++)
      {
                p1=&str;    //将指针数组指向str
      }
......
如果输入的K > 20,你确定不会数组越界?

#include <malloc.h>
#include <stdio.h>
void fuc(int **p, int n)
{
    int **p = (int **)malloc(sizeof(int *) * n);
    for (size_t i = 0; i < n; i++)
    {
      *(p + i) = (int *)malloc(sizeof(int));
      scanf("%d", (*p + i));
    }
    for (size_t i = 0; i < n - 1; i++)
    {
      for (size_t j = i + 1; j < n; j++)
      {
            if (*(*p + i) >= *(*p + j))
            {
                int t = *(*p + i);
                *(*p + i) = *(*p + j);
                *(*p + j) = t;
            }
      }
    }
    for (size_t i = 0; i < n; i++)
    {
      printf("%d ", *(*p + i));
    }
    free(p)
}
int main(int argc, char const *argv[])
{
    int **p = NULL;
    fuc(p, 5);
    return 0;
}

--------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.16299.1087]
(c) 2017 Microsoft Corporation。保留所有权利。

E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.25.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-04gaq3lm.jte --stdout=Microsoft-MIEngine-Out-nppsv3hf.tln --stderr=Microsoft-MIEngine-Error-uhyqflbp.4ip --pid=Microsoft-MIEngine-Pid-wcrorhqu.nzb "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
100 100 2 300 0
0 2 100 100 300
E:\Users\86184\Documents\Code>

机智如我么么哒 发表于 2019-10-9 12:23:36

bin554385863 发表于 2019-10-9 01:52
谁告诉你函数的声明和定义实在main函数里面进行的?

#include


谢谢,懂了
页: [1]
查看完整版本: 求助佬,为什么我的代码没有输出值