C和指標讀後筆記

2021-06-29 01:48:52 字數 1458 閱讀 4180

注釋:

#if 0

statements

#endif

從邏輯上刪除一段**或者注釋。
程式設計練習:編寫乙個程式,從標準輸入讀取幾行輸入。每行輸入都要列印到標準輸出上,前面要加行號。在編寫這個程式時要試圖讓程式能處理的輸入行的長度沒有限制。

字串常量:字串常量實際上是個指標。

已知字串常量"xyz" ,

"xyz"+1 代表:字串中的第二個字元:y

*"xyz"代表:字串的第乙個字元:x

"xyz"[2]代表:字串的第三個字元:z

(1)神秘的函式

//引數是乙個0~100的值

#include

void mystery(int n)

引數為0 ,列印0個星號

引數為100,列印10個星號。

(2)putchar ("0123456789abcdef"[value%16] ) ;

10進製轉換為16進製制部分**。

#include

#include

#if 0

(1) 巨集替換

#endif

//只有當字串常量作為巨集引數給出時才能使用。

#define print(formart,value) \

printf ( "the value is " formart "\n" , value)

//#argument 這種結構被預處理器翻譯為「argument」。

#define print1(formart,value) \

printf("the value of " #value \

" is " formart "\n" ,value)

#if 0

(2) 巨集與函式

巨集是與型別無關的,有一些任務根本無法用函式實現。

#endif

#define malloc(n,type) \

( (type*)malloc( (n)*sizeof(type)) )

typedef struct node

node;

#if 0

(3) 帶***的巨集

當巨集引數在巨集定義中出現的次數超過一次時,如果這個引數具有***,將會出現不可預料的結果。

#endif

#define max(a,b)  ( (a) > (b) ? (a) : (b) )

#if 0

(4) 防止標頭檔案多重包含

#endif

#ifndef  _headername_h

#define _headername_h 1

/*標頭檔案中的內容

*/#endif

int main()

(1)除錯用的printf,後應該加fflush(stdout),立即輸出到螢幕上,因為printf結果是先寫入緩衝區中。

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

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

C 筆記 C 陣列指標和指標陣列

char p 10 為陣列指標,實際上相當於二維陣列,也就是指向乙個一維陣列的指標 p可以單獨看做指向陣列的指標 比如這樣 int b 2 int cc 2 2 1,2 3,4b cc b cout 這樣的賦值是可以的,b指向的陣列的大小一定要和cc的第一維陣列大小一致,這裡輸出,4,因為b 這個時...

9 12學習記錄 C和指標》讀後感

c和指標 這本書是暑假看的,看的不算精吧,也可以說是原來懂得鞏固一下,之前沒有理解的這次還是沒有徹底弄明白。我就把我看的比較仔細地方做一點整理。先講陣列這塊,我們先考慮下面這個例子 int a 10 int b 10 int c c a 0 表示式 a 0 是乙個指向陣列第乙個元素的指標。但那正是陣...