日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言由淺入深了解變量的應用_C 語言

作者:龜π氣功 ? 更新時間: 2022-07-03 編程語言

1. 變量的存儲類別

內存

  1. 物理內存:實際的存儲設備
  2. 虛擬內存:操作系統虛擬出來的內存
  3. 操作系統會在物理內存和虛擬內存之間做映射。
  4. 在32位系統下,每個進程的尋址范圍是4G, 0x00 00 00 00 ~ 0xff ff ff ff
  5. 在寫應用程序的時候,我們看到的都是虛擬地址
  6. 在32位操作系統中,虛擬內存被分為兩個部分,3G的用戶空間和1G的內核空間,其中用戶空間是當前進程私有的,內核空間是一個系統中所有進程公有的。

虛擬內存分區(運行程序時進行分區)?

  1. 堆:在動態申請內存的時候在堆里開辟內存
  2. 棧:主要存放局部變量
  3. 靜態全局區:(1)未初始化的靜態全局區:靜態變量(定義便來嗯的時候,前面加static修飾),或全局變量,沒有初始化的,存在此區。(2)初始化的靜態全局區:全局變量,靜態變量,賦值的存在此區。
  4. 代碼區:存放程序代碼
  5. 文字常量區:存放常量

2. 全局變量

普通的全局變量

概念:在函數外部定義的變量

#include<stdio.h>
int a = 10;  // 普通全局變量
int main(){
    printf("a的數值是%d\n",a);
    return 0;
}

作用范圍:程序的所有地方,只不過用之前需要聲明,例如 extern int a;

生命周期:一直到程序運行結束。

注意:定義普通全局變量時,如果不賦值,默認為0

靜態全局變量

概念:定義全局變量的時候,前面加一個static修飾

作用范圍:static限定了靜態全局變量的作用范圍,只能在它定義的.c文件中有效

聲明周期:直到程序結束

注意:不賦值默認為0

#include<stdio.h>
static int a = 10;  // 靜態全局變量,不能跨文件使用
int main(){
    printf("a的數值是%d\n",a);
    return 0;
}

3. 局部變量

普通局部變量

概念:在函數內部定義的,或者復合語句中定義的變量

作用范圍:在函數中定義的變量,在函數中有效。在復合語句中定義的,在復合語句中有效

生命周期:在函數調用之前,局部變量不占用空間,調用的時候才為局部變量開辟空間,函數結束了,局部變量就釋放了。復合語句中也是如此。

#include<stdio.h>
void myfunc(){
    int a = 10;   // 局部變量
    printf("a的數值是%d\n",a);
    return;
}
int main(){
    myfunc();
  //  printf("a的數值是%d\n",a); 這條語句是錯誤的,main不可以調用myfunc中的變量a
    return 0;
}

靜態局部變量

概念:定義局部變量的時候,前面加static修飾

作用范圍:在它定義的函數或復合語句中有效

生命周期:第一次調用函數的時候,開辟空間賦值,函數結束后,不釋放,以后再調用函數的時候,就不再為其開辟空間,也不賦初值,用的是以前哪個變量。

#include<stdio.h>
void myfunc(){
    static int a = 10;   // 靜態局部變量
    printf("a的數值是%d\n",a);
    return;
}
int main(){
    myfunc();
    return 0;
}

4. const不可賦值變量

const 關鍵字用來聲明不可賦值的變量

#include<stdio.h>
int main(){
    const int num;
    num = 7;  // 這條語句必報錯
    printf("num是%d\n",num);
    return 0;
}

報錯如下:

既然不可以賦值,那有什么用呢?可以在初始化的時候進行賦值!

#include<stdio.h>
int main(){
    const int num = 8;
    printf("num是%d\n",num);
    return 0;
}

5. volatile多變的變量

volatile關鍵字用來聲明多變的變量,這種變量的內容隨時可能被改變,而且這種改變的原因不是我們的語句造成的

原文鏈接:https://blog.csdn.net/weixin_45231460/article/details/124632675

欄目分類
最近更新