C語言中文網 目錄
首頁 > 編程筆記 > C語言筆記 閱讀:3,164

變量的本質是什么?

那么到底什么是變量?看看下面這個程序:
# include <stdio.h>
int main(void)
{
    int i;
    i = 3;
    printf("i = %d\n", i);
    return 0;
}
在上面這個程序中,首先定義了一個變量 i,然后把 3 放到 i 里,接著輸出 i。

關鍵看前兩句,第三句 printf 的用法非常復雜,功能非常強大。但是因為其用法太靈活了,所以很容易出錯。在后面會專門用一章的內容詳細地介紹 printf,這里先不講。

int i;表示定義了一個變量 i。那么程序在運行時定義的變量 i 存儲在什么地方呢?存儲在內存還是硬盤上?答案是存儲在內存。

當單擊編譯、鏈接、執行后彈出一個黑色窗口,關閉那個黑色窗口后,就意味著這個程序運行了一遍,而且這一遍已經終止了。此時存儲 3 的內存空間就沒有了,要是有的話就麻煩了!如果任何軟件運行一遍后為它分配的空間仍保留著,那么計算機再運行幾次就不行了。程序運行完之后,為這個程序所分配的所有內存空間通通都會被釋放掉,以便被下一個程序使用。

所謂“釋放”并不是指清空該內存空間,而是指將該內存空間標記為“可用”狀態,使得系統在分配內存的時候可以將它重新分配給其他變量使用。

如果沒有釋放的話系統在分配內存的時候是不會使用該內存空間的,因為它已經被別的變量使用了,是不可用的狀態。“釋放”這個詞后面會經常說到,大家要注意一下。

下面看看這兩條語句是怎么運行的。首先看程序是如何運行int i;的:當編譯器運行第一條語句的時候,它會請求操作系統在內存中尋找一個空閑的存儲單元,然后把它當作變量 i 來使用。也就是說這個存儲單元的地址和 i 產生了一種關聯。即變量 i 現在就是這個存儲單元,這個存儲單元現在就是變量 i。

然后i=3;的結果是把 3 存放到變量 i 所關聯的那個存儲單元中。

前兩條語句就是這么運行的。以后只要使用 i,操作系統就會自動找到那個與它關聯的存儲單元。

為什么要使用變量

為什么要使用變量?如果不使用變量的話,那就意味著我們要自己編程尋找內存里面的那個存儲單元。而內存里面有很多存儲單元,每個存儲單元都有一個編號。如果須記住這些編號的話就太麻煩了。假如要定義 100 個變量,那就要記住 100 個編號,這樣編程是不可能實現的。

而利用變量就可以很方便地解決這個問題!當定義了一個變量之后,此時變量對應的是哪個存儲單元,那個存儲單元的編號是什么,通通都不用我們考慮,系統內部會自動產生一一對應的關系。這樣就方便了對數據的存儲和對內存單元的操作。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo