c - 如何更新作为参数传递的函数中的布尔变量



在提到的代码中,如何在语句中获取更新的值 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);
    

注意:

  1. 摆脱#define中的;,它们不是必需的,并且可能会在以后引起问题。
  2. stdbool.h已经定义了truefalse,你可以使用它们来尝试定义你自己的常量。
  3. 在方法 1 中,我们需要更改函数的返回类型。
  4. 请使用有意义的名称来函数,不要混淆未来的读者(包括你自己)。我已经对我的例子做了。

您需要传递一个指针,然后在函数内部取消引用才能更改/更改传递的参数:

#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 TRUEFALSE,而是使用 truefalse

void printbool(bool a)

需要

void printbool(bool *a)

并通过指针分配:

*a=TRUE;

呼叫身份

printbool(&a);

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

最新更新