欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:C語(yǔ)言 ——深入理解指針(2)

柚子快報(bào)邀請(qǐng)碼778899分享:C語(yǔ)言 ——深入理解指針(2)

http://yzkb.51969.com/

目錄

1. 數(shù)組名的理解2. 二級(jí)指針3. 指針數(shù)組4. 字符指針變量5. 數(shù)組指針變量6. 函數(shù)指針變量7. 函數(shù)指針數(shù)組

1. 數(shù)組名的理解

這里我們使用 &arr[0] 的方式拿到了數(shù)組第一個(gè)元素的地址,但是其實(shí)數(shù)組名本來(lái)就是地址,而且是數(shù)組首元素的地址,我們來(lái)做個(gè)測(cè)試。

#include

int main()

{

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

printf("&arr[0] = %p\n", &arr[0]);

printf("arr = %p\n", arr);

return 0;

}

輸出結(jié)果:

我們發(fā)現(xiàn)數(shù)組名和數(shù)組首元素的地址打印出的結(jié)果一模一樣,數(shù)組名就是數(shù)組首元素(第一個(gè)元素)的地址。

數(shù)組名如果是數(shù)組首元素的地址,那下面的代碼怎么理解呢?

#include

int main()

{

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

printf("%d\n", sizeof(arr));

return 0;

}

輸出的結(jié)果是:40,如果arr是數(shù)組首元素的地址,那輸出應(yīng)該的應(yīng)該是4/8才對(duì)。

其實(shí)數(shù)組名就是數(shù)組首元素(第一個(gè)元素)的地址是對(duì)的,但是有兩個(gè)例外:

sizeof(數(shù)組名),sizeof中單獨(dú)放數(shù)組名,這里的數(shù)組名表示整個(gè)數(shù)組,計(jì)算的是整個(gè)數(shù)組的大小, 單位是字節(jié)&數(shù)組名,這里的數(shù)組名表示整個(gè)數(shù)組,取出的是整個(gè)數(shù)組的地址(整個(gè)數(shù)組的地址和數(shù)組首元素 的地址是有區(qū)別的)

除此之外,任何地方使用數(shù)組名,數(shù)組名都表示首元素的地址。

2. 二級(jí)指針

指針變量也是變量,是變量就有地址,那指針變量的地址存放在哪里?

這就是二級(jí)指針。

對(duì)于二級(jí)指針的運(yùn)算有:

*ppa 通過(guò)對(duì)ppa中的地址進(jìn)行解引用,這樣找到的是pa , *ppa 其實(shí)訪問(wèn)的就是pa .

int b = 20;

*ppa = &b;//等價(jià)于pa = &b;

**ppa 先通過(guò)*ppa 找到pa ,然后對(duì)pa 進(jìn)行解引用操作: *pa ,那找到的是a .

**ppa = 30;

//等價(jià)于*pa = 30;

//等價(jià)于a = 30;

3. 指針數(shù)組

指針數(shù)組,是存放指針的數(shù)組。

指針數(shù)組的每個(gè)元素都是用來(lái)存放地址(指針)的。

指針數(shù)組的每個(gè)元素是地址,又可以指向一塊區(qū)域。

4. 字符指針變量

在指針的類(lèi)型中我們知道有一種指針類(lèi)型為字符指針char* ;

int main()

{

char ch = 'w';

char *pc = &ch;

*pc = 'w';

return 0;

}

5. 數(shù)組指針變量

數(shù)組指針變量:存放的是數(shù)組的地址,能夠指向數(shù)組的指針變量。

int (*p)[10];

解釋?zhuān)簆先和*結(jié)合,說(shuō)明p是一個(gè)指針變量,然后指針指向的是一個(gè)大小為10個(gè)整型的數(shù)組。所以p是一個(gè)指針,指向一個(gè)數(shù)組,叫 數(shù)組指針。

這里要注意:[]的優(yōu)先級(jí)要高于號(hào)的,所以必須加上()來(lái)保證p先和結(jié)合。

數(shù)組指針類(lèi)型解析:

int (*p) [10] = &arr;

| | |

| | |

| | p指向數(shù)組的元素個(gè)數(shù)

| p是數(shù)組指針變量名

p指向的數(shù)組的元素類(lèi)型

6. 函數(shù)指針變量

函數(shù)指針變量是用來(lái)存放函數(shù)地址的。

#include

void test()

{

printf("hehe\n");

}

int main()

{

printf("test: %p\n", test);

printf("&test: %p\n", &test);

return 0;

}

輸出結(jié)果如下:

test: 005913CA

&test: 005913CA

確實(shí)打印出來(lái)了地址,所以函數(shù)是有地址的,函數(shù)名就是函數(shù)的地址,當(dāng)然也可以通過(guò)&函數(shù)名的方式獲得函數(shù)的地址。

如果我們要將函數(shù)的地址存放起來(lái),就得創(chuàng)建函數(shù)指針變量咯,函數(shù)指針變量的寫(xiě)法其實(shí)和數(shù)組指針?lè)浅n?lèi)似。如下:

void test()

{

printf("hehe\n");

}

void (*pf1)() = &test;

void (*pf2)() = test;

int Add(int x, int y)

{

return x + y;

}

int(*pf3)(int, int) = Add;

int(*pf3)(int x, int y) = &Add;//x和y寫(xiě)上或者省略都是可以的

函數(shù)指針類(lèi)型解析:

int (*pf3) (int x, int y)

| | ------------

| | |

| | pf3指向函數(shù)的參數(shù)類(lèi)型和個(gè)數(shù)的交代

| 函數(shù)指針變量名

pf3指向函數(shù)的返回類(lèi)型

int (*) (int x, int y) //pf3函數(shù)指針變量的類(lèi)型

7. 函數(shù)指針數(shù)組

函數(shù)指針數(shù)組是用來(lái)把函數(shù)的地址存到一個(gè)數(shù)組中。

int (*parr1[3])();

parr1 先和[] 結(jié)合,說(shuō)明 parr1是數(shù)組,數(shù)組的內(nèi)容是什么呢?

是int (*)() 類(lèi)型的函數(shù)指針。

柚子快報(bào)邀請(qǐng)碼778899分享:C語(yǔ)言 ——深入理解指針(2)

http://yzkb.51969.com/

精彩內(nèi)容

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19321807.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄