<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            C語言

            C語言變量存儲布局

            時間:2025-01-05 11:00:59 C語言 我要投稿
            • 相關推薦

            C語言變量存儲布局

              C語言變量是怎么儲存的大家了解嗎?下面一起去了解一下C語言變量存儲布局是怎么樣的吧,希望對大家有幫助!

              1.正文段(.text):機器指令部分,是只讀的,防止意外的修改;

              2.初始化數據段(.data):保存程序中的全局變量且已被賦初值或在函數中被static修飾的且已被賦初值的變量;

              3.未初始化數據段(.bss):保存程序中的全局變量且未被賦初值或在函數中被static修飾的且未被賦初值的變量,這些變量由內核賦初值0;

              4.堆:通常由程序員進行申請,最后進行釋放;

              5.棧:存放函數中的臨時變量,函數調用時給變量分配內存,函數釋放時釋放內存。

              下面以實際的例子來分析變量存儲空間:

              #include

              const int A = 10;

              int a = 20;

              static int b = 30;

              int c;

              int main(void)

              {

              static int a = 40;

              char b[] = "forward";

              register int c = 50;

              printf("Hello World %d ", c);

              return 0;

              }

              1.全局變量A用const修飾,表示A是只讀的,不可修改,它的地址位于.rodata段;注意,像A這種const變量在定義時必須初始化。因為只有初始化時才有機會給它一個值,一旦定義之后就不能再改寫了,也就是不能再賦值了;

              2.程序中的字符串字面值"Helloworld%d "分配在.rodata段的末尾,字符串字面值是只讀的,相當于在全局作用域定義了一個const數組:

              const char helloworld[] = {'H', 'e', 'l', 'l', 'o', ' ', 'w','o', 'r', 'l', 'd', ' ', '%', 'd', ' ', '

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看