在提到代码,如何获得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;
}
尝试这个:
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
s的,他们并不需要和可能以后会出现问题。stdbool.h
already defines true
and false
,您可以利用它们,而不是试图定义自己的常量。你需要通过函数内部的指针,然后间接引用,以改变/改变传递的参数:
#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
。
void printbool(bool a)
需要是
void printbool(bool *a)
并通过指针分配:
*a=TRUE;
如打电话
printbool(&a);
基本的东西 - 你需要知道这一点。