*n=j;//为什么写作*n++就不可以实现了

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

void fun (int x, int pp[], int *n)
{
int i=1,j=0;
for(;i<x;i+=2)
{
if(x%i==0)
{
pp[j++]=i;
n=j;//为什么写作n++就不可以实现了
}
}

}

void main ()
{
FILE wf;
int x,aa[1000], n, i ;
system("CLS");
printf("\nPlease enter an integer number : \n ") ;
scanf ("%d", &x) ;
fun (x, aa, &n) ;
for (i=0 ; i<n ; i++)
printf ("%d ", aa [i]);
printf ("\n ") ;
/
/
wf=fopen("out.dat","w");
fun (30, aa, &n) ;
for (i=0 ; i<n ; i++)
fprintf (wf,"%d ", aa [i]);
fclose(wf);
/
/
}

n++是先n++,然后n

意义不同,n++是先用n的值,用完之后n才+1

这里你在用的时候要注意 *n++ 关于这个 *和++运算符的优先级
首先 i++ 本事就是加1 动作 但是你是要对指针n中存储的内容+1,所以 要带括号。
而不带括号的逻辑分析一下,给p的地址加1后取地址的值,,,乱套了。。

img