亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

對C語言中指針的理解與其基礎使用實例

2020-01-26 14:41:49
字體:
來源:轉載
供稿:網友

C語言的指針,關鍵意思在于“指”。

“指”是什么意思?
其實完全可以理解為指示的意思。比如,有一個物體,我們稱之為A。正是這個物體,有了這么個稱謂,我們才能夠進行脫離這個物體的實體而進行一系列的交流。將一個物體的指示,是對這個物體的抽象。有了這種抽象能力,才有所謂的智慧和文明。所以這就是“指示”這種抽象方法的威力。

退化到C語言的指針,指針是一段數據/指令(在馮諾易曼體系中,二者是相通,在同一空間中的)的指示。這是指示,也就是這段數據/指令的起始位置。但是數據/代碼是需要一個解釋的方法的。比如0x0001,可以作為一個整數,也可以作為作為一串指令,也可以作為一串字符,總之怎樣解釋都可以。

而C語言,在編譯階段,確定了這段數據/指令的“解釋方法”。
例如,整型指針,表示的就是可以從這個指針p指向的位置開始解釋,解釋為一個整數。
一個函數指針,表示的就是可以從這個指針p指向的位置開始解釋,解釋為一段指令,對應的輸入和輸出以及返回值按照函數指針的類型,符合相應的要求。

綜上,C語言的精髓是指針,但指針不僅僅是C語言的精髓,它是抽象的精髓。各個語言中都有類似的東西,例如函數,例如引用。

(引用和指針的區別,我的理解,不可以進行+/-偏移操作的指針,就是引用。隨意偏移,很容易使得目標位置不符合其相應的意義,從而造成解釋失敗,進而崩潰。而增加了偏移功能的指針,好處是方便表述一堆具有相同類型的數據/指令,數組之類的就是這樣的實例。)

同樣的void類型的指針,也是C語言的特色。void型的指針,就是去掉了指定類型的指針,從而使得可以以任意解釋方式,解釋指針,這就帶來了如上的潛在問題。但是也可以說,這個C語言的特有威力(我一般都把C語言的威力理解為這個)。這個帶來的好處非常之靈活。因為可以使用統一的類型來表述所有類型的數據。帶來的問題,和上面是類似的。就是如果解釋方法不當,就會造成災難性的后果。C語言的強制類型轉換也是打破常規的指針解釋.也有可能帶來問題.

下面來看一下關于指針的一些基礎知識:

1. 基礎

int i = 10; int *p = &i; /* 定義一個指向int類型的指針p,并把i的地址賦給它 */ printf("i=%d, &i=%p, p=%p, *p=%d /n", i, &i, p, *p); 

程序輸出為:

i=10, &i=0x22ac44, p=0x22ac44, *p=10

&i是i的地址,指針p保存了i的地址,*p是取指針的值,也就是i的值。

2. 指針類型的參數和返回值

/* 定義一個返回值為指向int類型的指針的函數 */ int *swap(int *px, int *py) {  int temp;  temp = *px;  *px = *py;  *py = temp;  return px; } int main(void) {  int i = 10;  int j = 20;  int *m = swap(&i, &j);  printf("i=%d, j=%d, *m=%d /n", i, j, *m);  return 0; }

 

程序輸出為:

i=20, j=10, *m=20

return px相當于定義了一個int類型的臨時指針來保存px,然后再把這個指針賦給指針m,所以m的指向和px是一樣的。

3. 指針和數組

int a[5] = {1, 2, 3, 4, 5}; int *pa = &a[0]; printf("*pa=%d pa=%p a=%p /n", *pa, pa, a); pa++; printf("*pa=%d /n", *pa); 

程序輸出為:

*pa=1 pa=0x22ac28 a=0x22ac28*pa=2

數組名作為參數傳遞時,實際傳遞的是第一個元素的指針,從上面的輸入可以看出。
指針pa++是讓pa指向下一個元素。

4. 指針與const

int n = 30; const int *x = &n; int const *y = &n; printf("*x=%d y++=%p /n", *x, y++); 

程序輸出:

*x=30 y++=0x22ac1c

const int 和 int const是一樣的,都是定義一個指向const int類型的指針。所以*x是不可變的,不能執行(*x)++這樣的操作,但是x是可變的,可以執行x++的操作。

int * const z = &n; printf("++(*z)=%d /n", ++(*z)); 

程序輸出:

++(*z)=31

上面定義的是一個指向int類型的const指針,所以z是不可變的,但是指針的值是可變的。要定義都不可變的指針就是:

int const * const pz;

5. 指向指針的指針

int c = 40; int *pc = &c; int **ppc = &pc; printf("&pc=%p ppc=%p *ppc=%p **ppc=%d", &pc, ppc, *ppc, **ppc); 

程序輸出:

&pc=0x22ac0c ppc=0x22ac0c *ppc=0x22ac10 **ppc=40

*ppc取的是pc的值,而**ppc就相當于*pc,就是c的值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲va欧美va国产综合剧情| 国产精品久久久| 777精品视频| 2019中文字幕免费视频| 成人国产精品免费视频| 精品亚洲精品福利线在观看| 久久久天堂国产精品女人| 国产啪精品视频| 国产精品一区二区久久| 亚洲综合精品一区二区| 欧美性色视频在线| 亚洲第一区第二区| 上原亚衣av一区二区三区| 欧美另类老肥妇| 狠狠爱在线视频一区| 91精品国产91久久久久| 国产免费一区视频观看免费| 7777kkkk成人观看| 色老头一区二区三区| 国产精品偷伦免费视频观看的| 国产精品三级在线| 亚洲精品免费在线视频| 日韩电影免费观看中文字幕| 亚洲成人激情视频| 亚洲a中文字幕| 粉嫩av一区二区三区免费野| 日本老师69xxx| 欧美亚洲第一区| 91精品国产综合久久男男| 精品久久香蕉国产线看观看亚洲| 美日韩精品免费观看视频| 9.1国产丝袜在线观看| 久久韩国免费视频| 日韩电影免费在线观看中文字幕| 亚洲裸体xxxx| 亚洲欧美日韩成人| 91久久精品国产| 97色在线观看免费视频| 久久精品国产欧美亚洲人人爽| 亚洲国产女人aaa毛片在线| 欧美精品免费在线| 国产欧美日韩91| 久久久久国产视频| 91成人在线视频| 97国产在线视频| 日本伊人精品一区二区三区介绍| 欧美成人精品一区| 日韩av中文字幕在线免费观看| 成人中文字幕+乱码+中文字幕| 日韩欧美在线视频免费观看| 国产不卡av在线免费观看| 日韩av在线资源| 成人性教育视频在线观看| 精品久久香蕉国产线看观看亚洲| 国产精品欧美在线| 91欧美日韩一区| 操人视频在线观看欧美| 亚洲精品久久久久久久久久久久久| 亚洲一区亚洲二区| 2019国产精品自在线拍国产不卡| 国产精品久久久久久久久久ktv| 国产精品中文久久久久久久| 国产精品劲爆视频| 伊人久久精品视频| 国产福利视频一区二区| 在线日韩精品视频| 国产精品精品一区二区三区午夜版| 欧美在线一区二区三区四| 欧洲亚洲女同hd| 国产精品av网站| 欧美另类极品videosbest最新版本| 亚洲欧美日韩天堂一区二区| 欧美成人合集magnet| 国产丝袜精品第一页| 国产69精品久久久久久| 国产综合香蕉五月婷在线| 日韩免费在线看| 宅男66日本亚洲欧美视频| 久久6免费高清热精品| 欧美一级黑人aaaaaaa做受| 色99之美女主播在线视频| 69av在线播放| 亚洲综合第一页| 欧美壮男野外gaytube| 国产精品久久久久久久久久久久久久| 亚洲天堂成人在线视频| 亚洲欧美资源在线| 欧美成人午夜免费视在线看片| 成人夜晚看av| 中文字幕综合在线| 欧美老女人性生活| 欧美日韩成人免费| 日本乱人伦a精品| 亚洲乱码av中文一区二区| 日韩在线播放一区| 国产精品九九九| 国产精品视频久久久久| 成人春色激情网| 亚洲国产一区二区三区在线观看| 色无极影院亚洲| 亚洲的天堂在线中文字幕| 久久中文久久字幕| 亚洲精品短视频| 91精品国产99久久久久久| 九九九久久国产免费| 日韩欧美精品中文字幕| 欧美高清激情视频| 亚洲欧洲日韩国产| 欧美韩国理论所午夜片917电影| 九九视频直播综合网| 亚洲视频在线视频| 色偷偷88888欧美精品久久久| 亚洲成人教育av| 超碰精品一区二区三区乱码| 91精品在线观| 久久久久久久久久久91| 日韩免费看的电影电视剧大全| 欧美国产精品va在线观看| 国产精品成人一区| 欧美国产日本在线| 精品日韩美女的视频高清| 日韩国产在线看| 91精品国产色综合久久不卡98口| 国产日韩在线免费| 亚洲图片欧美午夜| 欧美电影免费观看高清| 韩国精品久久久999| 日韩一区二区福利| 久久精品久久久久| 欧美性猛交xxxxx免费看| 2019亚洲男人天堂| 国产精品日韩精品| 97视频在线观看成人| 日本亚洲欧美成人| 国产精品人人做人人爽| 亚洲男女自偷自拍图片另类| 日韩欧美成人精品| 亚洲精品乱码久久久久久按摩观| 欧美大片免费观看在线观看网站推荐| 91精品视频在线播放| 亚洲综合日韩中文字幕v在线| 欧美性猛交xxxx久久久| 久久99精品久久久久久青青91| 国产精品丝袜视频| 亚洲一区二区三区视频播放| 日韩精品视频在线免费观看| 国产精品视频自在线| 欧美一级成年大片在线观看| 全亚洲最色的网站在线观看| 国产91在线视频| 欧美成人四级hd版| 日韩中文字幕在线播放| 亚洲色图50p| 欧美性猛交xxxx久久久| 国产99视频在线观看| 亚洲精品之草原avav久久| 国产精品极品在线| xxx成人少妇69| 午夜精品一区二区三区在线播放| 欧美日韩国产一区二区三区| 国产精品久久久久久久久久久久久久| 国产欧美久久久久久| 91精品国产综合久久男男| 亚洲欧美综合图区|