为什么我的函数不修改 C 结构体中变量的值? [英] Why does my function not modify the value of variable in a struct in C?
本文介绍了为什么我的函数不修改 C 结构体中变量的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的意见.我必须写一个函数,它给我减去 Zesp.Im
struct Zesp { double Re;双我;};struct Zesp z1 = { .Re = 5.323 ,.Im= 3.321};typedef struct Zesp zesp;zesp spZ(zesp z){z.Im = -(z.Im);返回 z;}int主(){spZ(z1);printf("%.2f, %.2f\n", z1.Re, z1.Im);返回0;}
我不知道为什么我得到的是 3.321 而不是 -3.321?
我编辑了我的程序,我的老师说我不能修改函数 spZ 的参数.
出现分段错误
<预><代码>#include 解决方案
您正在将结构的副本传递给函数.它返回一个副本,但您没有使用结果.
您需要将函数的结果赋给变量.
z1 = spZ(z1);
This is my input. I must write a function, which give me minus 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;
}
I don't know why I get 3.321 instead of -3.321?
I edit my program, my teacher said that I can't modify argument of a function spZ.
I get a segmentation fault
#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;
}
解决方案
You're passing a copy of the structure to the function. It returns a copy, but you're not using the result.
You need to assign the result of the function to the variable.
z1 = spZ(z1);
这篇关于为什么我的函数不修改 C 结构体中变量的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文