C语言中的小小“指针”出问题了!
#include <stdlib.h>#include <stdio.h>
void writeData();
void findValue(int *result,int *amount)
{
int i;
*amount = 0;
for(i=1; i<1000; i++)
{
if((i%7==0 && i%11!=0) || (i%7!=0 && i%11==0))
{
result[*amount] = i;
(*amount)++;
}
}
}
void main()
{
int result,amount,k;
system("CLS");
findValue(result,&amount);
printf("amount=%d\n",amount);
for(k=0;k<amount;k++)
if((k+1) %10 ==0)
{
printf("%5d",result);
printf("\n");
}
else printf("%5d",result);
writeData();
}
void writeData()
{
int result,amount,k;
FILE *fp;
fp=fopen("OUT.DAT","w");
findValue(result,&amount);
for(k=0;k<amount;k++)
if((k+1) %10 ==0)
{
fprintf(fp,"%5d",result);
fprintf(fp,"\n");
}
elsefprintf(fp,"%5d",result);
fclose(fp);
}
这里面的
result[*amount] = i;
(在第九行!)
问什么不是
*result[*amount] = i;
这样啊!
希望哪位朋友解答解答! result[], 是根据下标找到该下标的地址, result代表的是首地址,根据类型和下标将首地址偏移, 如果是*result[],*result并不是一个地址, 他是一个数值,数值不能做索引,如果result是二级指针,那么可以*result[],否则编译器回报错。 :smile:smile:smile
页:
[1]