mj老師說過沒學好指標等於沒學c語言。c語言之所以強大,以及其自由性,很大部分體現在其靈活的指標運用上。因此,說指標是c語言的靈魂,一點都不為過。c中函式呼叫是按值傳遞的,指標所做的是位址的傳遞。(*p)操作是返回p 的值作為位址的那個空間的取值。(&p)則是這樣一種運算,返回當時宣告p 時開闢的位址。
一、指標變數的定義
1.格式:變數型別*指標變數名; 2.
舉例:int *p; char *p2;
3.注意:定義變數時的*僅僅是指標變數的象徵 4.
指標變數只能儲存位址 5.
6.指標變數p前面的int:指標變數p只能指向int型別的資料 7.
指標變數未經過初始化,不要拿來間接訪問其他儲存空間 8.
任何指標都占用8個位元組的儲存空間
二、利用指標變數簡單修改其他變數的值
1.指向某個變數
int a;
int *p;
p = &a;
或者int *p = &a;
2.修改所指向變數的值
*p = 10;
3.在函式內部修改外面變數的值
int a = 10;
change(&a);
void change(int *n)
4.指向指標的指標
int a = 10;
int *p = &a;
int **pp = &p;
三、指標與陣列
1.將陣列當做函式引數傳入時,會自動轉為指標
1.陣列元素的訪問方式
int ages[5];
int *p;
p = ages;
1> 陣列名[下標] ages[i]
2> 指標變數名[下標] p[i]
3> *(p + i)
2.指標變數+
1,位址值究竟加多少,取決於指標的型別
int * 4
char * 1
double* 8
指標在記憶體中的儲存方式
// 0000 0000 0000 0000 0000 0000 0000 0010
int i = 2;
// 0000 0001
char c = 1;
利用乙個指標來接收乙個陣列,指標變數指向了陣列的首元素,陣列名就是陣列的位址,也是陣列首元素的位址
四、指標與字串
1.定義字串的2種方式
1> 利用陣列
char name = "itcast";
* 特點:字串裡面的字元是可以修改的
* 使用場合:字串的內容需要經常修改
2> 利用指標
char *name = "itcast";
* 特點:字串其實是乙個常量字串,裡面的字元是不能修改
* 使用場合:字串的內容不需要修改,而且這個字串經常使用
2.計算乙個字串的字元個數
int string_len(char *s)
return count;
}
3.定義字串陣列
1> 利用二維字元陣列
char names[2][10] = ;
2> 利用指標陣列
char *names[2] = ;
五.指向函式的指標
定義:double(*p)(double, char*, int);
p = haha;
或者double (*p)(double, char *, int) = haha;
3.如何間接呼叫函式
1> p(10.7, "jack", 10);
2> (*p)(10.7, "jack", 10);
int (*p)(int, int);
// 定義指標變數指向sum函式
// 左邊的int:指標變數p指向的函式返回int型別的資料
// 右邊的(int, int):指標變數p指向的函式有2個int型別的形參
p = sum;
int c = (*p)(10, 11);
printf("c is %d\n", c);
特例沒有返回值的函式
void (*p)();
// (*p)是固定寫法,代表指標變數p將來肯定是指向函式
// 左邊的void:指標變數p指向的函式沒有返回值
// 右邊的():指標變數p指向的函式沒有形參
void test()
p = test; // 指標變數p指向了test函式
p(); // 呼叫函式等同於test();
黑馬程式設計師 對委託的初步理解
今天看到論壇裡有人問委託的問題,想想自己也搞不懂委託到底是什麼東西,好像以前稍微看過一點但沒具體怎麼看,所以今天就看了一些資料。看完後,我的理解是這樣的,這只是初步的理解,不對的請見諒,希望提出來,共同進步。委託呢其實就是乙個方法的大集合,就像列舉一樣,它把要用的方法都存到了裡面,當要呼叫什麼方法的...
黑馬程式設計師Java中對多型的理解
asp.net android io開發s net培訓 期待與您交流!一開始對多型也是半知半解的,最近又要用到多型,所以又溫習了一下 多型是繼承中的一種特別的 for example class fatherclass function1 function2 function3 class sonc...
黑馬程式設計師 C語言 指標
asp.net android ios開發 net培訓 期待與您交流!指標 指標是c語言中非常重要的資料型別 指標變數的定義 int p int是指標指向資料的型別 p是指標變數名稱 只是用來表示變數為指標變數 指標的使用 int a 10 int p p a 或者p a 表示將變數a的記憶體位址賦...