首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么线程在共享局部变量时有自己的堆栈?

为什么线程在共享局部变量时有自己的堆栈?
EN

Stack Overflow用户
提问于 2018-12-16 22:46:54
回答 1查看 75关注 0票数 2

根据我目前的理解:

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

我的推理有什么问题..。

我也许不应该猜测,但是现在是这样的:在线程的透视图上,父堆栈似乎是.全球性的?

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

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 16:03:24

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

代码语言:javascript
复制
void function_1(){ int a,b;}

A和B只能在这个函数中使用。调用函数后,变量将被销毁。

下一个例子:

代码语言:javascript
复制
#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;
}

A可以在main()内部使用

全局变量:

代码语言:javascript
复制
#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()中使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53807134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档