在上述代码中,如何在printf("value : %d\n",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 : %d\n",a);
return 0;
}
void printbool(bool a)
{
a = TRUE;
}
答案 0 :(得分:4)
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
already defines true
and false
,您可以使用它们而不是尝试定义自己的常量。答案 1 :(得分:3)
您需要传递一个指针,然后在函数内部取消引用,以更改/更改传递的参数:
#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 : %d\n",a);
return 0;
}
void printbool(bool *a)
{
*a = TRUE;
}
还要注意,如果要包括define TRUE
,则不需要FALSE
和stdbool.h
,而应使用true
和false
。
答案 2 :(得分:3)
尝试一下:
void printbool(bool *a)
{
*a = TRUE;
}
在主要情况下,调用函数如下:printbool(&a);
答案 3 :(得分:2)
void printbool(bool a)
需要成为
void printbool(bool *a)
并通过指针分配:
*a=TRUE;
呼叫为
printbool(&a);
基本知识-您需要知道这一点。