《C和指標》第八章 陣列

2021-06-22 04:49:23 字數 1211 閱讀 8232

1.一維陣列名的值是乙個指標常量,也就是第乙個元素的位址,它的型別取決於陣列元素的型別,陣列元素是什麼型別的,它就是指向什麼型別的指標,並且這個指標是乙個指標常量而不是指標變數

2.只有兩種場合陣列名不當指標常量來表示:一是當陣列名作為sizeof操作符的運算元的時候,sizeof返回整個陣列的長度而不是指向陣列的指標的長度

二是當陣列名作為單目操作符&的運算元的時候,取乙個陣列名的位址所產生的是乙個指向陣列的指標而不是指向某個指標常量的指標

3.除優先順序外,下標引用和間接訪問完全相同   array[value] 和*(array+(value))一樣

4.指標和下標:下標絕對不會比指標更有效率。但指標有時會比下標更有效率

5.指標和陣列的屬性大相徑庭。當申請乙個陣列的時候,它同時也分配了一些內訓空間,用於容納陣列元素;但宣告乙個指標的時候,他只分配用於容納指標本身的空間

6.當陣列名作為函式引數傳遞時,實際傳遞給函式的是乙個指向陣列第乙個元素的指標。陣列形參既可以宣告為陣列有可以宣告為指標,這兩種宣告形式只有當他們作為函式形參的時候才是相等的

7.陣列初始化列表包含的值的個數少於陣列元素的個數,陣列最後幾個元素就被預設值初始化。如果多於陣列元素個數,這個宣告就是錯誤的

8.字元陣列初始化可以用字串常量的格式進行初始化,但他是乙個初始化列表。並不表示乙個字串常量

9.多維陣列是一維陣列的特型,就是它的每乙個元素本身也是陣列,所以多維陣列名就是乙個指向陣列的指標

10.注意下標:int  mart[3][10];

以下各表示什麼:mart[1][5]        mart         mart+1     *(mart+1)          *(mart+1)+5         *( *(mart+1)+5)           *(mart[1]+5)

11.指向陣列的指標(本質上是指標,只是它是指向陣列的指標):int  mart[3][4],  *mp=mart;這是不對的,因為mart是乙個指向陣列的指標,而mp是乙個指向整型的指標,應該宣告  int  (*mp)[10];

12.作為引數的多維陣列:  一位陣列int  vec[10]作為引數可以寫成  int  *vec    或者int  vec;而對於乙個二維陣列int   mart[3][10]作為引數可以寫成 int  mart[10]

或者int (*mart) [10]

13.指標陣列(本質上是陣列,只是是存放指標的陣列):  例如     int   *api[10];

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 指標

指標 1,指標 指標,英文名是pointer,也叫位址,他是常量。他就是乙個記憶體空間的首位置。2,指標變數,位址變數 顧名思義,指標變數就是存放指標 位址 的變數。如果定義呢?short int p null 定義了乙個指標變數p,並且付給初始值為零。short int 就是型別。表示的是存放sh...

第八章 指標

1 8.3.1 指標基礎及指標運算 2 8.3.2 資料交換 3 8.3.3 字串反轉及字串連線 4 8.3.4 陣列元素奇偶排列 1 掌握指標的概念和定義方法。2 掌握指標的操作符和指標的運算。3 掌握指標與陣列的關係。4 掌握指標與字串的關係。5 熟悉指標作為函式的引數以及返回指標的函式。6 了...