如何更新功能的布尔变量被作为参数传递

问题描述 投票:0回答:4

在提到代码,如何获得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;
}
c boolean
4个回答
3
投票

尝试这个:

void printbool(bool *a)
{
  *a = TRUE;
}

在主,调用函数如下:printbool(&a);


4
投票

C使用传递由函数参数传递值,从而给该函数内的接收到的参数进行的更改不会反映给调用者。

你可以

  • 返回新值并存储到初始变量 bool changebool(bool a) { a = TRUE; return a; } 并且,在main() a = changebool(a);
  • 一个指针传递到原来的变量,并变化到值在地址指针指向。 void changebool(bool* a) { *a = TRUE; } 并且,在main() changebool(&a);

注意:

  1. ;摆脱#defines的,他们并不需要和可能以后会出现问题。
  2. stdbool.h already defines true and false,您可以利用它们,而不是试图定义自己的常量。
  3. 在方法1,我们需要改变函数的返回类型。
  4. 请使用有意义的名称,功能,不要混淆未来的读者(包括你自己)。我已经做了我的例子。

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 TRUEFALSE如果你是包括stdbool.h,改用truefalse


2
投票
void printbool(bool a)

需要是

void printbool(bool *a)

并通过指针分配:

*a=TRUE;

如打电话

printbool(&a);

基本的东西 - 你需要知道这一点。

© www.soinside.com 2019 - 2024. All rights reserved.