c语言数据域和指针域,C语言的变量域和指针
可以使用某個變量名的所有語句的綜合叫這個變量的作用域
每個變量都有它自己的作用域,在函數中的變量,或者函數形參中的變量,都是局部變量,他們的作用域就是當前函數,而全局變量的聲明在所有函數之外,全局變量的作用域是程序中的所有語句,在當前程序的各個地方都能訪問到,全局變量不初始化的話,系統會自動初始化為0,而局部變量則不確定
塊變量聲明在某個語句塊內部,塊變量的作用域是語句塊內部的所有語句
在局部范圍內,如果定義與全局變量同名的局部變量,在此局部范圍內會屏蔽全局變量
變量的生命周期指變量可以被使用的時間范圍,全局變量的生命周期是整個程序運行期間,局部變量的生命周期是函數運行期間,塊變量的生命周期是語句塊的運行期間
auto關鍵字可以用來聲明局部變量,所有局部變量都自動是auto類型
static關鍵字可以用來聲明變量,static關鍵字可以把局部變量和塊變量的生命周期延長到整個程序運行期間,static局部變量和塊變量也會被初始化成0
static全局變量的作用域是聲明它的那個文件內部的所有語句,用static聲明的全局變量不能跨文件使用
static局部變量的初始化工作在程序開始運行的時候只執行一次,static聲明的局部變量在作用域外不能使用
不同類型的變量可以重名,某一條語句使用的重名變量是距離它最近的變量
使用extern關鍵字聲明全局變量可以在源文件中使用其他源文件中聲明的全局變量
指針變量是用來記錄地址數據的
指針變量包括很多類型,分別對應不同來源的地址數據
指針變量的聲明如下:
int *p_num;
p_num = NULL;NULL代表空地址(其實就是數字0)
任何指針變量中或者是有效地址或者是NULL,既沒有記錄有效地址也沒有記錄NULL的指針叫做野指針,應避免這種情況
指針變量前面加*可以表示對應的普通變量,但是是有條件的,就是必須指針里面放了一個數的地址
同一條語句中聲明多個同類型的指針變量時需要在每個變量的前面加*
所有指針類型的變量都是同樣大小的,都是四個字節大小,指針類型之間可以任意轉換
不同類型的指針變量之間賦值過程中地址數據不會發生改變,改變的是通過這個地址所能找到的數據以及它的使用方式
void*也是一種指針類型,這種類型沒有說明地址數據的來源,這種類型的指針用來表示普通變量之前要先進行強制類型轉換
指針變量可以作為函數的形參和返回值使用,可以避免在函數調用中,發生大量的數據復制工作
數組做形參本質上就是指針變量做形參
函數中如果修改了指針形參對調用函數沒有影響,函數中如果通過指針形參修改了普通變量則對調用函數有影響
指針變量做形參同樣可以實現數據的雙向傳遞
指針變量可以作為函數的返回值使用,但絕不可以把局部變量的地址作為返回值使用
指針變量支持如下的四則運算:
指針 + 整數,指針 — 整數,指針 - 指針,計算結果不是數學計算結果,與指針類型有關
二級指針變量用來記錄一級指針變量的地址
二級指針變量可以用來表示三個不同的變量
指針類型的返回值和二級指針類型的形參可以實現同樣的效果
二維數組名稱不可以賦值給二級指針
a[i]==*(a+i) a[i][j]的二維數組中,i行j列的數組元素的地址是*(a+i)+j==a[i]+j
總結
以上是生活随笔為你收集整理的c语言数据域和指针域,C语言的变量域和指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux客户端 手机,WAPI客户端在
- 下一篇: 杜比音效卡刷包android 7.0,杜