指標變數的定義
型別名 * 指標變數名;
型別名:可以是任意型別(包括void), 也稱基型別;
p = &i;讀作:p指向i;
如果: p指向i,那麼*p就是i;
*p:以p中所儲存的內容作為起始位址,
以p的基型別所佔位元組數作為偏移量,訪問此空間。
指標傳參:
在被調函式中,通過對形參指標的間接訪問,
可以改變主調函式中實參指標所指向的變數的值。
例子:
void swap(int* pa, int* pb)
////void swapcpp(int& a, int&b)
//int main()
a == &a[0];
陣列名代表陣列首元素的位址;
如果int a[10];
int* p = a;
則a[i] == *(a + i) == p[i] == *(p + i);
3[a] == a[3];
陣列名取位址 + 1,跳過整個陣列;
&a + 1
p = a;
p + n跳過幾個位元組(sizeof(p的基型別))*n;
例如:int main2()
int (*p)(int, int);
函式名即函式入口位址;
p = add;
p(4, 5) == 9;
函式指標用途:
主要作為其他函式的引數,將乙個可變的功能傳遞給被調函式,
以提高被調函式的通用性。
返回指標的函式
型別名* 函式名(形參列表);
下面是錯誤示例:
int* fn()
int* fn()
; return a + 5;
}
野(瘋)指標:如果乙個指標所指向的空間是無效空間,
那麼他就是乙個野指標.
函式返回指標變數時,我們要保證所返回的位址所對應的空間,
在主調函式中依然是有效的(依舊在其生存週期中)。
可行示例:
int* fn()
int g = 9;
int* fn()
int* fn(int a[10])
int* fn()
指標陣列:是個陣列,陣列每個元素是個指標。
int* a[10];
C語言隨記 指標運用
下面是一列宣告 int p 返回值為int的函式 int p 3 int型陣列 int p 返回值為 乙個int型指標的指標 的函式 int p 返回值為int的函式指標 int p 6 指向 int型陣列 的指標 陣列指標 int p 返回值為 int型指標 的函式 int p 6 指向 返回值為...
C語言隨記
1.c11 c語言新標準 2.表示系統自帶的庫,也可寫成 h 表示使用者自定義的庫 3.main函式是c語言的程式入口,現在大多為int main 而不是void main 4.記憶裡的c語言新特性 5.原始檔 通過編輯器建立的檔案,包含源 通常是.c檔案 6.c語言程式 編輯程式 c或.cpp 編...
《C和指標》隨記
前陣子花兩周時間又把 c和指標 過了一遍,陸陸續續做了些筆記,現總結如下。1.eof是乙個int型數值。2.去除某段 將其注釋掉不是乙個好選擇,更高效 安全的辦法是使用 if endf if 0 statements endif3.在c語言中,陣列引數是以引用形式進行傳遞的,也就是傳址呼叫,而標量和...