1. 作用域(scope):任何一種編程中,作用域是程式中定義的變數所存在的區域,超過該區域變數就不能被訪問,C 語言中有三個地方可以宣告變數.
a. 在函式或塊內部的區域變數
- 在某個函式或塊的內部宣告的變數稱為區域變數,它們只能被該函式或該代碼塊內部的陳述句使用,區域變數在函式外部是不可知的,
b. 在所有函式外部的全域變數
- 全域變數是定義在函式外部,通常是在程式的頂部,全域變數在整個程式生命周期內都是有效的,在任意的函式內部能訪問全域變數,全域變數可以被任何函式訪問,也就是說,全域變數在宣告后整個程式中都是可用的,
c. 在形式引數的函式引數定義中
- 函式的引數,形式引數,被當作該函式內的區域變數,如果與全域變數同名它們會優先使用. 詳情見:https://www.runoob.com/cprogramming/c-scope-rules.html
sub:
1.全域變數保存在記憶體的全域存盤區中,占用靜態的存盤單元;
區域變數保存在堆疊中,只有在所在函式被呼叫時才動態地為變數分配存盤單元,
正確地初始化變數是一個良好的編程習慣,否則有時候程式可能會產生意想不到的結果,因為未初始化的變數會導致一些在記憶體位置中已經可用的垃圾值,
當區域變數被定義時,系統不會對其初始化,您必須自行對其初始化,定義全域變數時,系統會自動對其初始化.
2. 陣列(array)
定義:C 語言支持陣列資料結構,它可以存盤一個固定大小的相同型別元素的順序集合,陣列是用來存盤一系列資料,但它往往被認為是一系列相同型別的變數,
陣列的宣告并不是宣告一個個單獨的變數,比如 number0、number1、...、number99,而是宣告一個陣列變數,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 來代表一個個單獨的變數,陣列中的特定元素可以通過索引訪問,
所有的陣列都是由連續的記憶體位置組成,最低的地址對應第一個元素,最高的地址對應最后一個元素,
宣告:double balance[10];
初始化: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; sub:大括號 { } 之間的值的數目不能大于我們在陣列宣告時在方括號 [ ] 中指定的元素數目,如果您省略掉了陣列的大小,陣列的大小則為初始化時元素的個數,
a.多維陣列(multidimensional array):
定義如下:int threedim[5][10][4]; 例子是個三維(3D)陣列,
sub:
1. 二維陣列在邏輯上是方陣,由行和列組成,
但是二維陣列在物理上是線性的,按行來依次進行存放,記憶體是連續的,
二維陣列名的步長是一行的長度,
2. 二維陣列存放字串,讀取時當一維陣列使用,
b.傳遞陣列給函式:
如果您想要在函式中傳遞一個一維陣列作為引數,您必須以下面三種方式來宣告函式形式引數,這三種宣告方式的結果是一樣的,因為每種方式都會告訴編譯器將要接收一個整型指標,同樣地,您也可以傳遞一個多維陣列作為形式引數,
例子見:https://www.runoob.com/cprogramming/c-passing-arrays-to-functions.html
sub: 列舉 C 語言傳遞二維陣列的方法,
方法1: 第一維的長度可以不指定,但必須指定第二維的長度-- 例子:void print_a(int a[][5], int n, int m)
方法2: 指向一個有5個元素一維陣列的指標:void print_b(int (*a)[5], int n, int m)
方法3: 利用陣列是順序存盤的特性,通過降維來訪問原陣列 : void print_c(int *a, int n, int m)
c.從函式回傳陣列:
C不允許回傳一個完整的陣列作為函式的引數,但是,您可以通過指定不帶索引的陣列名來回傳一個指向陣列的指標,
另外,C 不支持在函式外回傳區域變數的地址,除非定義區域變數為 static 變數,
例子:https://www.runoob.com/cprogramming/c-return-arrays-from-function.html
d.指向陣列的指標:
double balance[50]; 這個代碼中,其實balance 是一個指向 &balance[0] 的指標,即陣列 balance 的第一個元素的地址,
-------------------------------------
double *p;
double balance[10];
p = balance;
-------------------------------------- 因此這段代碼是合法的,p 賦值為 balance 的第一個元素的地址, 例子:https://www.runoob.com/cprogramming/c-pointer-to-an-array.html
3.C enum(列舉):
列舉是 C 語言中的一種基本資料型別,它可以讓資料更簡潔,更易讀,
參考:
https://www.runoob.com/cprogramming/c-enum.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/63308.html
標籤:C
