C 通过指针的两个输出值

C 通过指针的两个输出值,c,pointers,C,Pointers,我必须编写以下函数,返回两个输出值 为此,我使用了一个指针作为商的第二个输出值。然而,当我想用一个输入测试它时,它似乎被压碎了。代码是: #包括 int div(int n,int m,int*商) { int d=0; 而(n>=m){ n=n-m; d++; } *商=d; 返回n; } 内部主(空) { int*p; int rest; 剩余=div(7,2,p); printf(“n-%i,d-%i”,其余,p); 返回0; } 我很高兴知道如何修复它,以及它为什么会发生 感谢

我必须编写以下函数,返回两个输出值

为此,我使用了一个指针作为商的第二个输出值。然而,当我想用一个输入测试它时,它似乎被压碎了。代码是:


#包括
int div(int n,int m,int*商)
{
int d=0;
而(n>=m){
n=n-m;
d++;
}
*商=d;
返回n;
}   
内部主(空)
{
int*p;
int rest;
剩余=div(7,2,p);
printf(“n-%i,d-%i”,其余,p);
返回0;
}
我很高兴知道如何修复它,以及它为什么会发生

感谢您的帮助

更改此项:

int *p;
int rest;

rest = div(7, 2, p); 
为此:

int p;
int rest;

rest = div(7, 2, &p); 

代码的问题是p指向一些随机的未分配位置(如果幸运的话,它是一个空指针)。更新版本为整数分配空间,然后将其地址传递给函数。然后,该函数有一个指向该地址的指针,可以将值写入该地址。内存在堆栈(局部变量)上分配,因此一切正常。

您需要向它传递一个指向实际变量的指针。您正在传递一个指向任何地方的
p
。尝试
intq;剩余=div(7、2和q),或者可能
intq;int*p=&q
@SteveSummit您的意思是声明另一个变量并将指针的值传递给它吗?因为如果是这样,它也不起作用。编辑:刚刚看到你的编辑