为什么我的函数不修改C中结构中变量的值?
这是我的意见。我必须写一个函数,它给我负Zesp.Im为什么我的函数不修改C中结构中变量的值?,c,struct,C,Struct,这是我的意见。我必须写一个函数,它给我负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 ()
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;
}
#包括
结构Zesp{double Re;
双Im;
};
结构Zesp z1={.Re=5.323,.Im=3.321};
类型定义结构Zesp Zesp;
zesp spZ(zesp z)
{
z、 Im=-(z.Im);
z=spZ(z);
返回z;
}
int main()
{
spZ(z1);
printf(“%.2f,%.2f\n”,z1.Re,z1.Im);
返回0;
}
您正在将结构副本传递给函数。它返回一个副本,但您没有使用结果
您需要将函数的结果分配给变量
z1 = spZ(z1);
问题是正在修改此结构的副本。 在您的代码中,此函数返回zest的新实例,该实例的数字应为倒数。因此,您应该保存此函数调用的结果:
z1 = spZ(z1);
或者可以修改参数本身,然后通过指针传递:
void spZ(zesp* z)
{
z->Im = -(z->Im);
}
通过新的编辑,函数
spZ()
现在是递归的!它在一次又一次地呼唤自己;但是,没有回来。而且,它会耗尽堆栈。但我有一个返回z;在函数的末尾。那么我应该改变什么呢?为什么要添加z=spZ(z)函数spZ()
中的code>?语句spZ(z1)main()
函数中的code>应该是z1=spZ(z1)代码>。谢谢,现在它清晰易懂了。谢谢你@AzeemSure。不客气!:)快乐编码!祝你好运