C和指標 閱讀筆記

2021-08-13 21:53:59 字數 1527 閱讀 6469

eof: end of file :檔案結束標記;

int a: int *a和int a是相同的但是後者會造成誤解int* a,b,c;應寫成int *a,*b,*c。

用typedef來建立新的型別名而不是用#define,#define不能正確的處理指標型別,如下例中bc就會宣告失敗,而更複雜的函式指標,陣列指標明顯typedef更合適。

#define p char *

p a,b,c;

宣告常量有兩種方式:const , #define。

const 是不可變的變數,其內容遵循變數的格式要求,應用場景是變數的應用場景,#define 是字面值替換,其內容可以更豐富除了簡單的替換外還可應用於(巨集的單行,多行定義,函式定義,條件編譯,標頭檔案宣告等領域中)

const 常量只有乙份,給的是對應的記憶體位址而#define 是立即數會有多份拷貝,存在記憶體浪費。

const 替換不會出現#define替換中的神奇錯誤,當然這些錯誤大多出現在const不能應用的字面值替換的場合。

const: int const a ; const int b;

int const p; int const p; int const * const p;

const 可作為函式形參對傳入引數進行限定,提醒編寫和使用者,同時也是函式過載的不同條件之一。

變數有三種型別:靜態,自動,暫存器變數;

變數有三個地方儲存:普通記憶體,執行時堆疊,硬體暫存器;

標誌符(函式,變數)具有三種鏈結屬性:external,internal,none;

作用域包括:**塊,檔案,原型,函式;

static: **塊外的static用於將標誌符的鏈結屬性改為internal(只能內部訪問);**塊內部的用於修改變數型別,將自動變數改為靜態變數。

c語言沒有賦值語句,只有賦值操作符,賦值和+-一樣在表示式內完成,表示式+』;』成為語句,所以y+3;是正常而無用的。printf()也是如此執行有用的函式過程,結果被忽略。(***)

**塊允許在一條語句的地方出現多條語句,c語言沒有bool型別,0為假,非0為真。

else子句歸屬於最近的不完整if語句。不要被奇怪的縮排迷惑。

for(s1;s2;s3)和 s1;while(s2)基本等價,不同在於continue語句,for不會跳過s3,while會。

a=b=c+3; a,b並不能說被賦了同樣的值,處於變數型別的考慮,b可能會截斷c+3; 乙個例子是,例子中讀取值被ch截斷而很難和eof相同。

char ch;

正確:while(ch=gerchar() != eof);

錯誤:while((ch=gerchar()) != eof);

大多數情況下 a +=1和a=a+1是相同的,乃至優化上也類似;

但考慮a[f(x)] +=1;和a[f(x)] = a[f(x)] +1;

前者只計算一次下標,後者會計算兩次,當f(x)不具有***時,前者效率更高;當f(x)具有***時,前後兩者可能不同。

13.

《C和指標》閱讀筆記 指標

無論是程式設計師還是計算機都無法通過值的位模式來判斷它的型別。型別是通過值得使用方法隱式確定的。編譯器能夠保證值的宣告和值的使用之間的關係時適當的,從而幫助我們確定值的型別。宣告乙個指標變數並不會自動分配任何記憶體。在對指標間接訪問前,指標必須進行初始化 使它指向現有的記憶體,或者它分配動態記憶體。...

C語言學習筆記 指標閱讀技巧

1 從最裡層的圓括號中未定義的標示符看起 2 首先往右看,再往左看 3 遇到圓括號或方括號時可以確定部分型別,並調轉方向 4 重複 2 3 步驟,直到閱讀結束 注意 當讀出是陣列時,須讀出元素個數 元素型別 當讀出是函式是,須讀出引數及型別,返回值型別 當讀出是指標是,須讀出指標所指向的型別,有時也...

指標閱讀技巧學習筆記

指標閱讀技巧學習筆記 int p1 int int f int p1為指標,指向函式,指向的函式有int 引數,f為第二個引數,它是函式指標,指向函式引數是int 返回值是int p1指向函式返回值為int int p2 5 int p2為陣列,有5個元素,這5個元素為指標,指向函式,函式型別為in...