gpt4 book ai didi

c - 为什么线程在共享局部变量时本身具有堆栈?

转载 作者:行者123 更新时间:2023-12-03 13:07:50 25 4
gpt4 key购买 nike

根据我目前的理解:

  • 每个线程都有自己的堆栈
  • 对于int a中的局部变量main(),它在main()堆栈上
  • main()中创建线程之后,他们都可以访问相同的a。等一下...?

  • 我的推理怎么了...

    我可能不应该猜测,但这是它:从线程的角度来看,父堆栈似乎是...全局的?

    (我知道这可能是以前问过的,但我找不到确切的解释此问题的人)

    最佳答案

    函数内部的变量称为局部变量。

    void function_1(){ int a,b;}
    A和B只能在此功能内使用。调用函数后,变量将被销毁。
    下一个例子:
    #include<stdio.h>    
    int main()
    {
    int a = 100;
    {
    /* variable a declared in this block is
    completely different from variable
    declared outside. */
    int a = 10;
    printf("Inner a = %d\n", a);
    }
    printf("Outer a = %d\n", a);
    // signal to operating system everything works fine
    return 0;
    }
    可以在main()内部使用
    全局变量:
    #include<stdio.h>
    void func_1();
    int a, b = 10; // declaring and initializing global variables
    int main()
    {
    printf("Global a = %d\n", a);
    printf("Global b = %d\n\n", b);

    func_1();

    // signal to operating system program ran fine
    return 0;
    }
    void func_1()
    {
    printf("From func_1() Global a = %d\n", a);
    printf("From func_1() Global b = %d\n\n", b);
    }
    A和B可以在main()和func_1()中使用。

    关于c - 为什么线程在共享局部变量时本身具有堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53807134/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com