C語言基礎(三)

2021-08-15 03:39:10 字數 1121 閱讀 6660

指標:

不論什麼指標型別,指標的大小總是由機器位數決定,例如32位客戶端指標占用4個位元組

&:取位址*:在定義時表示指標變數,在用時表示取值p:p指向的位址*p:p指向的位址值

int *p ;

*p = 3 ;

上述會出現段錯誤,修改了未定義的記憶體,指標指向不明

(*p)++與*p++、++*p的區別?

(*p)++指p指向內容,然後內容+1

*p++ 先求p指向的內容,然後指標指向位址向後挪一位

++*p 指p指向內容+1

malloc:申請空間(對於未賦初值的字串變數,要想輸入字串,則必須向記憶體申請空間)

例如:

char  *p ;

p = (char*)malloc(sizeof(char)*20)

表示字元指標p申請了乙個20個字元長度的記憶體,並指向這個空間

指標與陣列:

如果指標變數p指向陣列中的元素,則(p+i)=(a+i)

char str[ ] = 「i love china」 區域性變數,棧空間

char *str = 「helloworld」 常量,資料段空間,不可被更改

有參巨集函式:

#define  s(a,b)  a*b

s(2, 3)=2*3

#define  s(x)=x*x

int k=2, m=1;

s(k+m)=2+1*2+1           (一根筋替換)

巨集函式優點:不佔記憶體  ;缺點:沒有入參判斷,增加編譯時間

函式指標:

int  (*p)():表示乙個指標,指向乙個函式,函式沒有形參,返回值為int型

例如

int (*p)(int, int);

p = add;

int add(int a,int b)

printf("%d\n",p(3,5);

輸出為8

判斷int * ( * ( *fp ) ( int ) ) [10]

fp是乙個指標,指向乙個函式,函式有乙個int型別的形參,函式的返回值是乙個指標,指向乙個有10個元素的陣列,每個元素是乙個指標

C語言基礎三

預處理指令 以 號開頭,可以寫在任何位置,在編譯之前執行 巨集定義檔案包含 條件編譯 一 巨集定義 無引數 有引數 num叫做巨集名,6是用來替換巨集名的字串 define num 10 條件一般需要用到巨集定義 if 條件1 不可以放變數 code1。如果條件1成立,則把code1編譯程序式 el...

C 語言基礎(三)

自定義函式的一般形式 注意 包含的內容可以省略,資料型別說明省略,預設是int型別函式 函式名稱遵循識別符號命名規範 自定義函式盡量放在main函式之前。如果要放在main函式後面的話,需要在main函式之前先宣告自定義函式,宣告格式為 資料型別說明 函式名稱 引數 自定義乙個sayhello 函式...

c語言基礎(三)

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。分別為 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應...