黑馬程式設計師 關於對指標的理解

2021-06-26 03:53:19 字數 2787 閱讀 2880

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的記憶體位址賦...