------- ios培訓、android培訓、期待與您交流! ----------
1.指標的概念
指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。
2 指標的型別。
先列出一些指標的型別,簡單的認識一下
(1)int *ptr; //指標的型別是int *
(2)char *ptr; //指標的型別是char *
(3)int **ptr; //指標的型別是 int **
(4)int (*ptr)[3]; //指標的型別是 int(*)[3]
3.指標的定義:
對指標變數的型別說明包括三個內容:
(1)指標型別說明,即定義變數為乙個指標變數;
(2)指標變數名;
(3)變數值(指標)所指向的變數的資料型別。
一般形式:類名識別符號 *指標變數名;
例如:int *a;
float *b;
之中 * 是指標型別的乙個說明符,他是和 int 組合來表明 ,後面定義的資料型別是指標型別,* 不是變數名的一部分。
例如上面 int * 以及float * 是指標型別 a 和 b是變數名。
4.給指標變數賦值
//定義乙個int型別的變數
int a=0;
//定義乙個指向int變數的指標變數p
int *p;
//將a變數的位址賦值給p
p=&a;
注:&符號是取變數a 的位址賦值給p,這樣p就指向了int型別的變數a
我們還可以在定義指標同時賦值,例如
int *p=&a;
5.指標的運算
當我們在上面那樣宣告以及賦值以後,我們就可以間接的操作變數a的值
之前我們操作a的值應該是:
a=10;
現在我們可以通過指標,達到一樣的效果:
*p=10;
這樣執行
printf("修改後,a的值:%d", a);
列印出: 修改後,a的值:10
上面是通過指標,更改指標所指向變數的值。那麼這就是賦值操作,那麼取值操作呢?一樣簡單
//定義乙個int變數b
int b=0;
此時如果我們列印b的值,肯定是 b=0;
現在我麼講變數a的值,取出來賦值給b,有兩種方式:
1〉不使用指標
b=a;
2〉使用指標,就是
b=*p; //*符號就是將p指向的變數的值取出來
6.指標使用注意點
在指標變數沒有指向確定位址之前,不要對它所指的內容賦值。下面的寫法是錯誤的
int *p;
*p = 10; //這是錯誤的
正確的方式應該是:
// 定義2個int型變數
int a = 6, b;
// 定義乙個指向變數b的指標變數p
int *p;
p = &b;
// 將a的值賦值給變數b
*p = a;
2.指標變數裡儲存的位址可以修改
3.指標變數可以指向特殊的資料型別(結構體、函式、指標)
4. 字串指標變數本身是乙個變數,用於存放字串的首位址。而字串本身是存放在以該首位址為首的一塊連續的記憶體空間中並以『/0』作為串的結束。字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。
5. 對字元陣列作初始化賦值,必須採用外部型別或靜態型別,如: static char st=;而對字串指標變數則無此限制,如: char *ps="c language";
6. 對字串指標方式 char *ps="c language";可以寫為: char *ps; ps="c language";而對陣列方式:
static char st=;
不能寫為:
char st[20];st=;
------- ios培訓、android培訓、期待與您交流! ----------
黑馬程式設計師 C語言學習筆記之陣列(九)
ios期待與您交流!1 定義 格式 型別 陣列名 元素個數 裡面的個數必須是乙個固定值,可以是常量 比如6 8 常量表示式 比如3 4 5 7 絕對不能使用變數或者變數表示式來表示元素個數,大多數情況下不要省略元素個數2 初始化 一般形式是 型別 陣列名 元素個數 int a 2 其實相當於 int...
黑馬程式設計師 C語言學習筆記之列舉(十三)
ios期待與您交流!enum 列舉名 c中的列舉非常簡單,它的本質是整型資料,列舉的每個成員都是int型的。enum printf 列舉所佔位元組數 lu n sizeof enum 輸出 列舉所佔位元組數 4 enum 列舉名 變數名 列舉中的成員是從0開始計數的 enum enum man ma...
黑馬程式設計師 C語言學習筆記之基本程式結構
ios培訓 android培訓 期待與您交流!1.條件語句 像其它語言一樣 c也提供條件語句。在c中條件語句的一 般形式為 if 表示式 語句1 else 語句2 上述結構表示 如果表示式的值為非0 ture 即真,則執行語句1,執行完語 句1從語句2後開始繼續向下執行 如果表示式的值為0 fals...