指標:
不論什麼指標型別,指標的大小總是由機器位數決定,例如32位客戶端指標占用4個位元組
&:取位址*:在定義時表示指標變數,在用時表示取值p:p指向的位址*p:p指向的位址值
上述會出現段錯誤,修改了未定義的記憶體,指標指向不明int *p ;
*p = 3 ;
(*p)++與*p++、++*p的區別?
(*p)++指p指向內容,然後內容+1
*p++ 先求p指向的內容,然後指標指向位址向後挪一位
++*p 指p指向內容+1
malloc:申請空間(對於未賦初值的字串變數,要想輸入字串,則必須向記憶體申請空間)
例如:
表示字元指標p申請了乙個20個字元長度的記憶體,並指向這個空間char *p ;
p = (char*)malloc(sizeof(char)*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型
例如
輸出為8int (*p)(int, int);
p = add;
int add(int a,int b)
printf("%d\n",p(3,5);
判斷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 按位或 兩個相應...