关于数组和指针在形参和实参中的用法
本帖最后由 咸鱼章一 于 2020-2-8 23:00 编辑问题:求1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过函数返回这些数的个数。
以下是自己写的代码:
#include <stdio.h>
int count(int *a,int m)
{
int n,cnt=0;
for(n=1;n<=m;n++)
{
if(n%7==0||n%11==0)
{
a=n;
}
printf("%d",cnt);
return cnt;
}
}
int main()
{
int m,cnt,*a;
printf("请输入一个正整数:");
m=getchar();
cnt=count(*a,m);
printf("%d",cnt);
}
运行时,输入m的值后报错:The variable 'a' is being used without being initialized.
希望有大神能解释一下修改方法以及实参不能和形参一样用*a的原因。。 实参*a表示的是一块内存的指针(地址),所以在使用它之前,需要对它分配一块内存。函数传递参数时,指针参数不需要带*
#include <stdio.h>
int count(int *a,int m)
{
int n,cnt=0;
for(n=1;n<=m;n++)
{
if(n%7==0||n%11==0)
{
a=n;
printf("%d\n",n);
}
}
return cnt;
}
int main()
{
int m,cnt,*a;
printf("请输入一个正整数:");
scanf("%d", &m);
a = (int *)malloc(m*sizeof(int));
cnt=count(a,m);
printf("\n一共有%d个",cnt);
free(a);
return 0;
}
页:
[1]