我无法理解正在发生的事情。第二个令牌的值是一些随机数而不是1.为什么第二个令牌的值不是函数中的值?
SELECT AttendanceCode, AttendanceDescription
FROM journalattendancestatus
ORDER BY (CASE WHEN AttendanceDescription= 'Present' THEN 1 ELSE 0 END) DESC
答案 0 :(得分:4)
C使用pass-by-value进行函数参数传递。
在您的代码中,import scipy.constants as sc
import numpy as np
import matplotlib.pyplot as plt
lhinm = 10000 # Highest wavelength in nm
T = np.linspace(200, 1000, 10) # Temperature in K
l = np.linspace(0, lhinm*1E-9, 101) # Wavelength in m
ll = np.linspace(0, lhinm*1E-9, 6) # Axis values
labels = np.linspace(0, lhinm, 6) # Axis labels giving l in nm
B = (2*sc.h*sc.c**2/l[:, np.newaxis]**5)/(np.exp((sc.h*sc.c)/(T*l[:, np.newaxis]*sc.Boltzmann))-1)
for ticks in [True, False]:
plt.plot(B)
plt.xlabel("Wavelength (nm)")
if ticks:
plt.xticks(ll, labels)
plt.title("With xticks()")
plt.savefig("withticks.png")
else:
plt.title("Without xticks()")
plt.savefig("withoutticks.png")
plt.show()
按值传递,因此在函数内对其进行的任何更改都不会反映给调用者。
您期望的是以下代码
second.token
打印10,这根本不可能。 (如果你打电话为void change( int x)
{
x = 10;
}
int main(void)
{
int p = 5;
change(p);
printf("%d\n", p);
return 0;
}
,想象恐怖。)
解决方案:
您不需要单独传递第二个参数。您已经将指针传递给包含枚举变量的结构,只需使用指针更改被调用函数中的值,然后在调用者中打印结构变量的枚举成员的值。
答案 1 :(得分:0)
struct player
{
char name[20];
enum cell token;
unsigned score;
};
BOOLEAN init_player2(struct player *second, enum cell token)
{
second->token= 1;
}
int main()
{
struct player second;
init_player2(&second, second.token);
printf("The value of second token is: %d\n", second.token);
return 0;
}
你只需要使用指针在函数内部使用变量来改变值。