求助佬,为什么我的代码没有输出值
#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 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> bin554385863 发表于 2019-10-9 01:52
谁告诉你函数的声明和定义实在main函数里面进行的?
#include
谢谢,懂了
页:
[1]