#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
void fun(int a[], int* n)
{
int i, k = 0;
for (i = 1; i <= 100; i++)
if ((i % 7 == 0 || i % 11 == 0) && (i % 77) != 0)
{
a[k] = i;
k++;
}
*n = k;
}
int main()
{
int a[100], n, i;
fun(a, &n);
for (i = 0; i < n; i++)
printf("%d ", a[i]);
return 0;
}
上面的意思是把k的值也就是最后数组的元素个数,传给了n所在的内存位置。
即:n的地址存上k的值了
如果函数的输入不是指针,间下面这个代码,修改了两个地方(写了注释的那两句)
//把指针改为变量之后就不对了。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
void fun(int a[], int n)
{
int i, k = 0;
for (i = 1; i <= 100; i++)
if ((i % 7 == 0 || i % 11 == 0) && (i % 77) != 0)
{
a[k] = i;
k++;
}
n =