第九章 再論陣列
1、陣列和指標分析
1)宣告
①外部陣列的宣告
如extern char a; 不能改寫成指標的形式
②陣列的定義(定義是宣告的一種特殊形式,分配記憶體空間,提供乙個初始值)
如char a[10]; 不能改寫成指標的形式
③函式引數的宣告。函式引數的陣列名總是可以轉換為指標。
如func(char a); 均可
2)使用
如c=a[i]; 均可
對編譯器來說,陣列是乙個位址,指標是乙個位址的位址。
2、陣列和指標相同的情形
1)「表示式中的陣列名」就是指標
對陣列下標的引用,可以寫成「乙個指向陣列的起始位址的指標加上偏移量」
例子:int a[10],*p,i=2;
訪問a[i]的形式:
①p=a;
p[i];
②p=a;
*(p+i);
③p=a+i;
*p;指標有型別限制,需要知道對指標進行解除引用應該取幾個位元組,以及每個下標的步長應該是幾個位元組
2)把陣列下標作為指標的偏移量
計算步長:偏移量乘以每個陣列元素占用的位元組數
3)「作為函式引數的陣列名」等同於指標
標準規定作為「型別的陣列」的形參的宣告應該調整為「型別的指標」,總是被自動轉換為指標
原因:提高效率,不用拷貝整個陣列
陣列和函式是傳址呼叫,其它是傳值呼叫
陣列名不可改,指標可以改
3、多維陣列
陣列的陣列
初始化:花括號,多維巢狀花括號
指標陣列,只能用字串常量初始化
C專家程式設計
說到c語言,首稱 c程式語言 這是一本入門和進修均可的書籍,值得讀三遍以上,方才有味。進修書籍如 c專家程式設計 是一本c語言較高層次的書,是成為c語言專家的必經之路。我自以為達到了一定的 程度,才開始學習這本書的。人言,c語言是一門藝術,需要多年歷練才能達到較為完善的境界,此言不虛。c語言進修書籍...
C 專家程式設計
2011.9.4 c 專家程式設計 1 容易混淆的 const 關鍵字const 並不能把乙個變數變為常量,它修飾的符號僅表示該符號的值不能被賦值,也就意味著唯讀不可寫,但它並不能防止通過程式內部 甚至外部,其它函式 的方法來修改它。const 最有用支出是用來限定函式的形參,這樣該函式不會修改實參...
c專家程式設計
pag13 關於替代庫函式 標準規定編譯器只有在違反語法規則和約束條件的情況下才能產生錯誤資訊。所有c語言標準標頭檔案中宣告的識別符號均保留,所以不能宣告乙個叫做malloc 的函式,因為在標準標頭檔案裡已經有乙個函式以此為名。但由於這個規定不是約束條件,因此可以違反他。所以可以用自己宣告的函式來替...