C语言指针出了点问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:47:07
一、设有生成器d(B),A=d(B)=B+B,如93=78+7+8;设计程序输出1到10000内所有生成数A。
我选用C语言。
#include <stdio.h>
main()
{int num,m,n,a;
int *point;
for(num=1;num<=10000;num++)
{for(m=1;m<=num;m++)
d(num,m,*point);
}
for(a=1;a<=1000;)
printf("%d\n",point++);
}

d(int numtwo,mtwo,*p)
{int a,b,c,d;
a=mtwo/1000;
b=(mtwo%1000)/100;
c=(mtwo%100)/10;
d=mtwo%10;
if(numtwo==mtwo+a+b+c+d)
{*p=numtwo;
p++;
}
}

就是编译不成功,不知道为什么。高人指教指教啊。。
好像还是死循环,编译时系统提示老说指针未定义,郁闷死我了

nclude <stdio.h>
d(int numtwo,int mtwo,int *p) ;
main()
{int num,m,n,a;
int *point;
for(num=1;num<=10000;num++)
{for(m=1;m<=num;m++)
d(num,m,point);
}
for(a=1;a<=1000;)
printf("%d\n",point++);
}

d(int numtwo,int mtwo,int *p)
{int a,b,c,d;
a=mtwo/1000;
b=(mtwo%1000)/100;
c=(mtwo%100)/10;
d=mtwo%10;
if(numtwo==mtwo+a+b+c+d)
{*p=numtwo;
p++;
}
}

-----------------------------------
1 d(int numtwo,mtwo,*p)
这样定义是不正确的,要给每个参数都加上类型,改成:
d(int numtwo,int mtwo,int *p)

2 d(int numtwo,int mtwo,int *p)在mian函数前需要声明

3 d(num,m,*point);第三个参数改为point,不需要星号,这里是要地址。

这样后,编译可以通过了。

d(num,m,*point);
...
d(int numtwo,mtwo,*p)
首先这两句就不匹配,传值的时候送过去的是指针里面的内容,接收的时候要接收一个指针类型的变量。
还有在函数定义的时候,参数都要写上变量的类型。后两个参数都没有,当然要说没有定义的错误了呀!