亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語言

C語言變量存儲布局

時間:2024-07-05 03:16:14 C語言 我要投稿
  • 相關(guān)推薦

C語言變量存儲布局

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

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

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

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

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

  5.棧:存放函數(shù)中的臨時變量,函數(shù)調(diào)用時給變量分配內(nèi)存,函數(shù)釋放時釋放內(nèi)存。

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

  #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變量在定義時必須初始化。因為只有初始化時才有機(jī)會給它一個值,一旦定義之后就不能再改寫了,也就是不能再賦值了;

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

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