2 custesc CUSTESC 于 2016.02.23 15:49 提问

求大神解答一下!程序编译通过,总是停止运行。

int* qiuyu(int n,int i)
{
int sum;
static int m=2;
sum[i]=n%m;
m
=2;
n-=sum[i];
if(sum[i]==0) /*求n的2次方之和*/
return qiuyu(n,i);
if(n==0)
return sum;
else
return qiuyu(n,++i);

}

int main(void)
{ int m;
int *sum,n=27,i=0;
sum=qiuyu(n,i);
m=sizeof(sum)/sizeof(int);
printf("%d",m);

}

2个回答

ywt923759010
ywt923759010   2016.02.23 17:01

那个sum变量是怎么回事哦

CUSTESC
CUSTESC 我打错了。应该是int *sum
接近 2 年之前 回复
qq_32565575
qq_32565575   2016.02.23 18:26

int * sum表明sum只能存储整型变量的地址,而题主后面出现sum[i]这里的sum是一个整型常量的地址。好像有点问题。

CUSTESC
CUSTESC 回复CUSTESC: 不是编译器不允许,是系统不允许。
接近 2 年之前 回复
CUSTESC
CUSTESC 找到问题了!声明*sum后,将sum当作数组首地址,数组越界了。编译器不允许
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!