在提到的代码中,如何在语句中获取更新的值 printf("value : %dn",a);
#include <stdio.h>
#include <stdbool.h>
#define TRUE 1;
#define FALSE 0;
void printbool(bool a);
int main()
{
bool a = FALSE;
printf("Hello, World!n");
printbool(a);
printf("value : %dn",a);
return 0;
}
void printbool(bool a)
{
a = TRUE;
}
试试这个:
void printbool(bool *a)
{
*a = TRUE;
}
在主函数中,调用如下函数:printbool(&a);
C 使用传递值进行函数参数传递,因此对函数内接收的参数所做的更改不会反映给调用方。
你可以
-
返回新值并存储到原始变量中
bool changebool(bool a) { a = TRUE; return a; }
而且,在
main()
a = changebool(a);
-
将指针传递给原始变量,并更改指针指向的地址处的值。
void changebool(bool* a) { *a = TRUE; }
而且,在
main()
changebool(&a);
注意:
- 摆脱
#define
中的;
,它们不是必需的,并且可能会在以后引起问题。 -
stdbool.h
已经定义了true
和false
,你可以使用它们来尝试定义你自己的常量。 - 在方法 1 中,我们需要更改函数的返回类型。
- 请使用有意义的名称来函数,不要混淆未来的读者(包括你自己)。我已经对我的例子做了。
您需要传递一个指针,然后在函数内部取消引用才能更改/更改传递的参数:
#include <stdio.h>
#include <stdbool.h>
#define TRUE 1
#define FALSE 0
void printbool(bool *a);
int main()
{
bool a = FALSE;
printf("Hello, World!n");
printbool(&a);
printf("value : %dn",a);
return 0;
}
void printbool(bool *a)
{
*a = TRUE;
}
另请注意,如果您包含stdbool.h
,则无需define TRUE
和FALSE
,而是使用 true
和 false
。
void printbool(bool a)
需要
void printbool(bool *a)
并通过指针分配:
*a=TRUE;
呼叫身份
printbool(&a);
基本的东西 - 你需要知道这一点。