天天看點

黑馬程式員——C語言指針一、 指針前奏二、 指針變量的定義三、 指針執行個體  四、 指針探究五、 指針與數組六、 指針與字元串七、 傳回指針的函數八、 指向函數的指針

------- android教育訓練、IOS教育訓練、期待與您交流! ----------

一、 指針前奏

1. 指針的重要性

指針是C語言中非常重要的資料類型,如果你說C語言中除了指針,其他你都學得很好,那你幹脆說沒學過C語言。

2. 小需求

l void change(int  n)函數調用完畢後,改變實參的值

l 分析:修改實參的值->找到存儲空間->位址

二、 指針變量的定義

1. 定義的格式

l 類名辨別符  *指針變量名;

l int *p;

2. 先定義後指派

l 簡單取值

int a = 10;

int *p;

p = &a;

printf(“%d”, *p);

l 簡單改值

*p = 9;

3. 定義的同時指派

int a = 10;

int *p = &a;

4. 實作修改實參

5. 注意點

l int *p;   p = 1000;

l int *p;   *p = 100;

l int *p;  *p = &a;

l %p輸出指針裡面存儲的位址值

l 其他指針類型說明,比如float *p;  char *p;

l 不能亂用類型,比如int a = 10;  float *p = &a;

6. 清空指針

l p = 0;

l p = NULL;

三、 指針執行個體  

1. void swap(char *a, char *b)  (注意temp=a;  a = b; b = temp;)

2. int sumAndMinus(int a, int b, int *minus)

四、 指針探究

1. 指針變量所占用的存儲空間

2. 為何指針變量要分類型?

int i = 2;

char c = 1;

int *p = &c;

printf(“%d”, *p);

五、 指針與數組

1. 指向一維數組元素的指針

2. 用指針周遊一維數組元素

l 先周遊char數組(‘i’,’t’),再周遊int類型數組

l *(p+i)和*(p++)的差別

l a+i和a++

l p[0]、p[1]

六、 指針與字元串

1. 字元串回顧

char s[] = “mj”;

2. 其他定義字元串的方式

char *s = “mj”;

或者

char *s;

s = “mj”;

3. 兩種定義方式的差別

l 記憶體分析

l 畫圖分析

l 常量和變量字元串的差別

l 常量的記憶體位址檢視

七、 傳回指針的函數

l 指針也是C語言中的一種資料類型,是以一個函數的傳回值肯定可以是指針類型的

l 傳回指針的函數的一般形式為:類型名 * 函數名(參數清單)

八、 指向函數的指針

1. 為什麼指針可以指向一個函數?

函數作為一段程式,在記憶體中也要占據部分存儲空間,它也有一個起始位址,即函數的入口位址。函數有自己的位址,那就好辦了,我們的指針變量就是用來存儲位址的。是以,可以利用一個指針指向一個函數。其中,函數名就代表着函數的位址。

2. 指向函數的指針的定義

定義的一般形式:函數的傳回值類型 (*指針變量名)(形參1, 形參2, ...);

3. 使用注意

l 由于這類指針變量存儲的是一個函數的入口位址,是以對它們作加減運算(比如p++)是無意義的

l 指向函數的指針變量主要有兩個用途:

·  調用函數

·  将函數作為參數在函數間傳遞

繼續閱讀