|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
struct complex * sum (struct complex z[10], int N)
{ struct complex z_sum;
int i;
for (i=0; i<N; i++)
{
z_sum.re += z[i].re;
z_sum.im += z[i].im;
}
return &z_sum;
}
struct complex z_sum;定义在了struct complex * sum (struct complex z[10], int N);函数体的内部,z_sum的作用域离开函数体后就会失效,也就是返回地址给指针,指针指向的数据不再可靠。
建议你将struct complex z_sum;定义在函数体之外。
根据你的函数定义,建议修改如下: - #include "stdio.h"
- struct complex
- {
- int re;
- int im;
- };
- struct complex z_sum;
- struct complex * sum (struct complex z[], int N)
- {
- int i;
- for (i=0; i<N; i++)
- {
- z_sum.re += z[i].re;
- z_sum.im += z[i].im;
- }
- return &z_sum;
- }
- int main(int argc, char* argv[])
- {
- struct complex z[6];
- z[0].re=0;
- z[0].im=0;
- z[1].re=1;
- z[1].im=1;
- z[2].re=2;
- z[2].im=2;
- z[3].re=3;
- z[3].im=3;
- z[4].re=4;
- z[4].im=4;
- z[5].re=5;
- z[5].im=5;
- printf("%d\n",sum(z,6)->im);
- return 0;
- }
复制代码
|
|