1. 程式人生 > >《The C Programming Language》學習筆記

《The C Programming Language》學習筆記

第五章:指標和陣列

  1. 單目運算子的優先順序均為2,且結合方向為自右向左。
*ip++;  // 將指標ip的值加1,然後獲取指標ip所指向的資料的值
(*ip)++;  // 將指標ip所指向的資料的值加1
  1. 當計算a[i]時,C編譯器會立即將其轉換為*(a+i)。也就是說,C語言中陣列下標表達式和指標加偏移是等價的。

  2. 陣列名和指標的一個區別:指標是變數,可以進行賦值和加減運算;陣列名不是變數,不能進行賦值和加減運算。

  3. p[-1], p[-2]在語法上是合法的,只要保證元素存在,後向索引陣列也是可以的。

  4. 指向同一個陣列(包括陣列最後一個元素的下一個元素)的兩個指標可以進行大小比較,而對沒有指向同一個陣列的兩個指標進行大小比較的行為是undefined的。

  5. 指標的合法操作:同類指標賦值、指標加減某個整數、指向同一陣列的兩個指標相減或比較大小、將指標賦值為0或與0比較;指標的非法操作:兩個指標相加、相乘、相除,以及指標與浮點數相加減等。

  6. char *pmsg = "now is the time";是將一個指向字元陣列的指標賦值給pmsg,而不是字串拷貝。C語言不提供任何對整個字串作為一個單元進行處理的操作符。

  7. 注意通過字串指標修改字串內容的行為是undefined的:
char amsg[] = "now is the time";  // an array
char *pmsg = "now is the time";   // a pointer