【发布时间】:2020-05-11 09:47:27
【问题描述】:
这是我的意见。我必须写一个函数,它给我减去 Zesp.Im
struct Zesp { double Re;
double Im;
};
struct Zesp z1 = { .Re = 5.323 ,.Im= 3.321};
typedef struct Zesp zesp;
zesp spZ(zesp z)
{
z.Im = -(z.Im);
return z;
}
int main ()
{
spZ(z1);
printf("%.2f, %.2f\n", z1.Re, z1.Im);
return 0;
}
我不知道为什么我得到 3.321 而不是 -3.321?
我编辑我的程序,我的老师说我不能修改函数 spZ 的参数。
我遇到了分段错误
#include <stdio.h>
struct Zesp { double Re;
double Im;
};
struct Zesp z1 = { .Re = 5.323 ,.Im= 3.321};
typedef struct Zesp zesp;
zesp spZ(zesp z)
{
z.Im = -(z.Im);
z = spZ(z);
return z;
}
int main ()
{
spZ(z1);
printf("%.2f, %.2f\n", z1.Re, z1.Im);
return 0;
}
【问题讨论】:
-
通过您的新编辑,函数
spZ()现在是递归了!它一次又一次地呼唤自己;但是,不回来。而且,它会耗尽堆栈。 -
但是我有一个返回 z;在函数的最后。那么我应该改变什么?
-
为什么要在函数
spZ()中添加z = spZ(z);?main()函数中的声明spZ(z1);应该是z1 = spZ(z1);。 -
谢谢,现在很清楚很容易。谢谢@Azeem
-
当然。别客气! :) 编码快乐!祝你好运!