精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊C語言中使用頻率較高的指針與數組

開發 前端
指針和數組在C語言中使用頻率是很高的,在極個別情況下,數組和指針是“通用的”,比如數組名表示這個數組第一個數據的指針。

定義

指針:C語言中某種數據類型的數據存儲的內存地址,例如:指向各種整型的指針或者指向某個結構體的指針。

數組:若干個相同C語言數據類型的元素在連續內存中儲存的一種形態。

數組在編譯時就已經被確定下來,而指針直到運行時才能被真正的確定到底指向何方。所以數組的這些身份(內存)一旦確定下來就不能輕易的改變了,它們(內存)會伴隨數組一生。

而指針則有很多的選擇,在其一生他可以選擇不同的生活方式,比如一個字符指針可以指向單個字符同時也可代表多個字符等。

指針和數組在C語言中使用頻率是很高的,在極個別情況下,數組和指針是“通用的”,比如數組名表示這個數組第一個數據的指針。

如下代碼:

#include <stdio.h>
char array[4] = {1, 2, 3, 4};
int main(void)
{
char * p;
int i = 0;
p = array;
for (; i < 4; i++)
{
printf("*array = %d\n", *p++);
}
return (0);
}

這里我們將數組名array作為數組第一個數據的指針賦值給p。但是不能寫成*array++。準確來說數組名可以作為右值,不能作為左值(左值和右值的概念這里不再展開講解)。

數組名的值其實是一個指針常量,這樣我想你就明白了數組名為什么不能做為左值了。如果想用指針p訪問array的下面2的數據,以下寫法是合法的。


char data;
/*第一種寫法*/
p = array;
data = p[2];
/*第二種寫法*/
p = array;
data = *(p+2);
/*第三種寫法*/
p = array +

指針與二維數組

先說一下二維數組,二維數組在概念上是二維的,有行和列,但在內存中所有的數組元素都是連續排列的,它們之間沒有“縫隙”。以下面的二維數組 a 為例:

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

從概念上理解,a 的分布像一個矩陣:

  • 0 1 2 3。
  • 4 5 6 7。
  • 8 9 10 11。

但是內存是連續的,沒有這樣的“矩陣內存”,所以二維數組a分布是連續的一塊內存。

C語言允許把一個二維數組分解成多個一維數組來處理。對于數組 a,它可以分解成三個一維數組,即 a[0]、a[1]、a[2]。每一個一維數組又包含了 4 個元素,例如 a[0] 包含 a[0][0]、a[0][1]、a[0][2]、a[0][3]。那么定義如下指針如何理解呢?

int (*p)[4];

括號中的*表明 p 是一個指針,它指向一個數組,數組的類型為int [4],這正是 a 所包含的每個一維數組的類型。那么和下面定義有什么區別呢?

int *p[4];

這里就要先說明*和[]的優先級了,[]的優先級是高于*的,所以int *p[4];等同于int *(p[4]);。所以它是一個指針數組。這里很繞,總接下:

int (*p)[4];是數組指針,它指向二維數組中每個一維數組的類型,它指向的是一個數組。

int *p[4];是指針數組,它是一個數組,數組中每個數是指向int型的指針。

指針數組與數組指針

對于指針數組,說的已經很明確了,不再詳細講解,下面說一下數組指針。舉例看一下:

#include <stdio.h>
int main()
{
int a[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};
int(*p)[4];
p = a;
printf("%d\n", sizeof(*(p + 1)));
return (0);
}

對于數組指針p如下:

那么printf("%d\n", sizeof(*(p + 1)));的結果就是16。如果想打印a[1][0]的值,代碼如下:

printf("%d\n", *(*(p + 1)));

如果想打印a[1][1]的值,代碼如下:

printf("%d\n", *(*(p + 1)+1));

這個代價自行體會,p是數組指針,它指向的是一個數組,所以對獲取它指向的值,也就是*p,是指向一個數組還是一個值,指向a[0]。獲取獲取a[0][0],就需要寫成**p。

對指針進行加法(減法)運算時,它前進(后退)的步長與它指向的數據類型有關,p 指向的數據類型是int [4],那么p+1就前進 4×4 = 16 個字節,p-1就后退 16 個字節,這正好是數組 a 所包含的每個一維數組的長度。也就是說,p+1會使得指針指向二維數組的下一行,p-1會使得指針指向數組的上一行。

最后再次捋一下數組指針和指針數組。

int *p1[4];是指針數組。

int (*p2)[4];是數組指針。

“[]”的優先級比“*”要高。

對于指針數組,p1先和“[]”結合,構成一個數組的定義,數組名為p1,int *修飾的是數組的內容,即數組的每個元素。那么它本質是一個數組,這個數組里有4個指向int類型數據的指針。

對于數組指針,“()”的優先級比“[]”高,“*”號和p2 構成一個指針的定義,指針變量名為p2,int 修飾的是數組的內容,即數組的每個元素。數組在這里并沒有名字,是個匿名數組。那么它本質是一個指針,它指向一個包含4個int 類型數據的數組。

既然深入談了指針數組和數組指針,就多聊一下。

#include <stdio.h>
int main()
{
char a[5] = {'A', 'B', 'C', 'D'};
char(*p3)[5] = &a;
char(*p4)[5] = a;
return 0;
}

上面代碼是編譯編譯是報了waring的,報警如下:

注意:不同的編譯器編譯結果可能不同,我的編譯方法請參考《使用vscode編譯C語言》。p3 這個定義的“=”號兩邊的數據類型完全一致,而p4 這個定義的“=”號兩邊的數據類型就不一致了。左邊的類型是指向整個數組的指針,右邊的數據類型是指向單個字符的指針。所以才有了上面的警告。

但由于&a 和a 的值一樣,而變量作為右值時編譯器只是取變量的值,所以運行并沒有什么問題。不過編譯器仍然警告你別這么用。

再舉一個栗子:

int vector[10];
int matrix[3][10];
int *vp,*vm;
vp = vector;
vm = matrix;

上面的代碼第5行是錯誤的,因為vm是指向整型的指針,但是matrix不是指向正向的指針,他是指向整型數組的指針。下面是正確的寫法:

int matrix[3][10];
int (*vm)[10];
vm = matrix;

數組指針的應用

上面說了那么多,可能大部分開發者用不到,數組指針在很多時候都是可以代替二維數組的,有些程序員喜歡用指針數組來代替多維數組,一個常見的用法就是處理字符串。

#include <stdio.h>
char *Names[] =
{
"Bill",
"Sam",
"Jim",
"Paul",
"Charles",
0};
void main()
{
char **nm = Names;
while (*nm != 0)
printf("%s \n", *nm++);
}

具體運行我就不講解了,運行結果如下:

注意數組中的最后一個元素被初始化為0,while循環以次來判斷是否到了數組末尾。具有零值的指針常常被用做循環數組的終止符。

這種零值的指針稱為為空指針(NULL)。采用空指針作為終止符,在增刪元素時就不必改動遍歷數組的代碼,因為此時數組仍然以空指針作為結束。

操作

寫到這里想到一個“操作”,先看下面代碼是否正確。

p[-1]=0;

初看這句代碼,覺得奇怪,甚至覺得它就是錯誤,日常C語言開發基本有見到小標是負數的,但是仔細想想沒有哪一本書說過下標能為負數的。看下面代碼:

void main()
{
int data[4] = {0, 1, 2, 3};
int *p;
p = data +2;
printf("p[-1] is %d\n",p[-1]);
printf("*(p-1) is %d\n",*(p-1));
}

運行結果如下:

不僅可以編譯通過,還能正確的輸出結果為1。這表明,C的下標引用和間接訪問表達式是一樣的。當然不鼓勵這種操作,代碼需要很強的可讀性,而不是這樣的操作,這里只是演示下標引用和簡介表達式的關系。

責任編輯:姜華 來源: 知曉編程
相關推薦

2021-07-13 06:44:04

Go語言數組

2014-08-01 15:16:05

SwiftC語言

2023-10-27 11:21:20

C語言Multics語言

2021-12-06 11:19:47

語言指針內存

2009-06-30 10:46:05

多級指針

2022-01-06 14:25:24

C語言指針內存

2025-09-25 17:17:06

GoC++指針

2023-10-04 00:01:00

sizeofC 語言

2023-12-21 11:46:48

C語言柔性數組開發

2011-05-25 13:22:05

PHPJSON

2011-05-13 17:25:34

C

2024-05-17 08:47:33

數組切片元素

2013-06-25 09:52:32

GoGo語言Go編程

2010-07-13 15:34:09

Perl語言

2010-07-26 16:23:23

Perl語言

2011-05-17 13:04:20

Cconst

2023-03-02 19:36:34

C語言

2023-01-31 08:48:49

Go語言文件

2016-12-05 13:35:02

C語言數組指針

2015-04-15 14:41:40

c語言數組名a&a詳細介紹
點贊
收藏

51CTO技術棧公眾號

日本在线播放一区二区三区| 亚洲区小说区图片区qvod按摩| 亚洲乱码国产乱码精品精的特点 | 激情五月俺来也| 看黄网站在线| 99re在线精品| 成人激情视频网| 91视频免费网址| 婷婷亚洲综合| 亚洲欧美日韩在线高清直播| 久久精品国产99久久99久久久| 24小时免费看片在线观看| 国产日产欧美一区二区三区| 999在线免费观看视频| 香港日本韩国三级网站| 日日夜夜精品一区| 99久久婷婷国产综合精品电影| 国产精品视频色| 国产真实乱人偷精品视频| 日本在线电影一区二区三区| 亚洲精品国产美女| 欧美一区二区三区影院| 999国产精品亚洲77777| 狠狠色狠色综合曰曰| 日本女人高潮视频| 国产精品一二三区视频| 成人福利视频在线| 亚洲一区二区久久久久久久| 五月婷婷六月婷婷| 亚洲精品影视| 欧美成年人网站| 99久久99久久精品免费看小说.| 理论片一区二区在线| 日韩一区二区免费在线观看| 奇米影音第四色| 范冰冰一级做a爰片久久毛片| 亚洲资源中文字幕| 中文字幕一区二区三区乱码 | 久久久这里只有精品视频| 午夜爱爱毛片xxxx视频免费看| 国产尤物久久久| 亚洲精品丝袜日韩| 亚洲男人在线天堂| 高清精品视频| 欧美大黄免费观看| 四虎国产精品免费| 中文字幕一区二区三区四区久久| 91精品国产综合久久福利软件| 香蕉视频禁止18| av亚洲一区| 欧美日韩一二三| 精品999在线| xxxxx.日韩| 精品视频一区二区三区免费| 亚洲国产精品三区| 欧美xxxx网站| 欧美一区二区三区免费视频| 91在线第一页| 成人av资源网址| 亚洲高清久久网| 成年女人免费视频| 欧美wwwsss9999| 亚洲欧美精品伊人久久| 精品国产av色一区二区深夜久久 | 国产亚洲人成a一在线v站| 日本一区二区三区网站| 国产精品视频看看| 只有精品亚洲| 日韩一区二区三区视频在线 | 欧美人与动牲交xxxxbbbb| 主播国产精品| 午夜伊人狠狠久久| 久久久999视频| 日韩和的一区二在线| 欧美亚洲一区二区三区四区| 奇米影视四色在线| 日韩精品一级| 亚洲精品国精品久久99热| 色欲AV无码精品一区二区久久| 成人在线电影在线观看视频| 久久久国产精品免费| 久久久久亚洲av片无码下载蜜桃 | 欧美婷婷精品激情| 久久精品九色| 日韩精品极品视频| 亚洲色图日韩精品| 好吊日精品视频| 日韩美女在线观看一区| 一级黄色a毛片| 成人av免费观看| 亚洲电影一二三区| 麻豆传媒在线观看| 午夜精品成人在线视频| 激情五月俺来也| 国产精品极品在线观看| 在线视频中文亚洲| 国产精品theporn动漫| 日韩国产在线一| 成人蜜桃视频| 日韩黄色影院| 精品久久久久久中文字幕| 中文字幕国产免费| 精品资源在线| 久久久国产精品视频| 中文字幕日韩一级| 国产一区二区三区免费看| 久久精品午夜一区二区福利| www视频在线免费观看| 欧美丝袜一区二区三区| 男女污污视频网站| 欧美老女人另类| 国模私拍视频一区| 国产精品午夜福利| 久久久久久久久久久电影| 黄色a级片免费看| 日韩精品一区二区三区av| 精品免费99久久| www.黄色com| 久久美女性网| 国产三区精品| 色爱综合区网| 欧美一区二区视频网站| 国产一级淫片久久久片a级| 国产九九精品| 激情一区二区三区| 日本资源在线| 91精品免费在线观看| av电影在线不卡| 免费亚洲一区| 久久国产精品-国产精品| 久久电影网站| 日韩精品专区在线影院重磅| 成人高潮免费视频| 久久成人精品无人区| 日韩精品一区二区三区色偷偷| 无遮挡爽大片在线观看视频| 亚洲国产精品悠悠久久琪琪| 免费在线一级片| 国产999精品久久| wwwjizzjizzcom| 国产精品视频首页| 久久偷看各类女兵18女厕嘘嘘| 中文字幕 欧美激情| 久久夜色精品一区| 亚洲爆乳无码专区| 国产videos久久| 日本久久中文字幕| 色资源在线观看| 色偷偷久久一区二区三区| 亚洲永久精品ww.7491进入| 亚洲自啪免费| 日韩电影大全在线观看| 成人精品电影在线| 中文字幕欧美日韩在线| 96日本xxxxxⅹxxx17| 亚洲视频资源在线| 欧美激情第四页| 亚洲视频日本| 麻豆91蜜桃| 日本综合久久| 久久天天躁狠狠躁老女人| av免费观看在线| 亚洲国产精品久久人人爱| 在线观看亚洲免费视频| 一本综合精品| 日本欧美精品久久久| 高清亚洲高清| 九九热最新视频//这里只有精品| 亚洲国产综合网| 欧美日韩在线视频首页| 亚洲欧美va天堂人熟伦| 狠狠色丁香婷综合久久| 免费网站永久免费观看| 最新国产一区| 成人国产精品久久久久久亚洲| 2024最新电影在线免费观看| 精品网站999www| 人妻中文字幕一区二区三区| 亚洲男同性视频| 中文字幕av观看| 蜜桃av噜噜一区| 男人天堂手机在线视频| 国产亚洲电影| 999国内精品视频在线| 9765激情中文在线| 一夜七次郎国产精品亚洲| 超碰免费在线97| 一本大道综合伊人精品热热 | 国产精品色婷婷视频| 亚洲性图自拍| 亚洲无av在线中文字幕| www.色呦呦| 欧洲激情一区二区| www青青草原| 久久精品人人做人人综合| 黑人性生活视频| 丝袜亚洲另类欧美| 污污污污污污www网站免费| 精品久久影视| 国产91精品入口17c| yw.尤物在线精品视频| 欧美巨猛xxxx猛交黑人97人| 久久电影视频| 日韩免费在线观看| 伊人久久一区二区| 日韩欧美亚洲国产一区| 久久免费播放视频| 国产精品三级电影| 深爱五月激情网| 国产成人免费av在线| 中文字幕第80页| 性8sex亚洲区入口| 欧美 日韩 国产精品| 四虎国产精品免费观看| 久久久久久99| 99a精品视频在线观看| 91丨九色丨国产在线| 午夜精品久久久久久久久久蜜桃| 欧美激情在线观看| 超碰电影在线播放| 色老头一区二区三区在线观看| 午夜视频福利在线| 亚洲白虎美女被爆操| aaa一区二区| 91精品国产综合久久久蜜臀粉嫩 | 亚洲网站在线播放| 午夜国产在线观看| 亚洲第一天堂av| www.激情五月| 欧美一区二区视频网站| 一区二区三区亚洲视频| 欧美日韩在线免费视频| 成人黄色免费网| 欧美午夜精品久久久| 91午夜精品亚洲一区二区三区| 精品福利一区二区| 99热国产在线观看| 五月激情六月综合| 日韩视频免费观看高清| 亚洲国产成人va在线观看天堂| 麻豆亚洲av熟女国产一区二| 一区二区三区四区中文字幕| www.毛片com| 亚洲男人天堂av| 我家有个日本女人| 亚洲精品日日夜夜| 麻豆changesxxx国产| 亚洲制服丝袜在线| 国产午夜精品无码| 精品人伦一区二区三区蜜桃网站 | 久久日韩精品| 日韩av午夜| 区一区二区三区中文字幕| 欧美禁忌电影| 亚洲视频在线二区| 五月激情久久久| 菠萝蜜视频在线观看入口| 黄色综合网站| 国产av无码专区亚洲精品| 久久中文欧美| 99re精彩视频| 国产不卡一区视频| 欧美深性狂猛ⅹxxx深喉| 久久一区二区三区四区| 国产精品理论在线| 亚洲日韩欧美一区二区在线| 久久久久久久久97| 黑人巨大精品欧美一区免费视频| www.欧美色| 欧美剧情片在线观看| 亚洲爆乳无码一区二区三区| 亚洲精品白浆高清久久久久久| 日韩电影在线观看完整版| 在线播放精品一区二区三区 | 午夜欧美理论片| 久久亚洲中文字幕无码| 日韩精品欧美成人高清一区二区| 日本黄色福利视频| 高清国产一区二区三区| 国产精品无码一区二区三区免费| 国产精品久久久久久久久晋中| 精品视频久久久久| 在线中文字幕一区| 精品乱子伦一区二区| 国产视频亚洲视频| 久操视频在线| 茄子视频成人在线| 国产精品久久久久久久久久辛辛| 激情小说综合区| 希岛爱理一区二区三区| 国产男女无遮挡| 国产乱码精品一区二区三 | www.天天干.com| 亚洲美腿欧美激情另类| 麻豆视频在线播放| 日本aⅴ大伊香蕉精品视频| 国产日韩一区二区三免费高清| 久久综合九九| 欧美精品啪啪| 2025韩国理伦片在线观看| 成人午夜碰碰视频| 久草福利资源在线| 欧美三级欧美成人高清www| 国产精品伦一区二区三区| 日韩精品在线观看一区| 中文字幕有码在线观看| 国产精品极品美女在线观看免费 | 99re免费视频精品全部| 国产老头老太做爰视频| 日本道色综合久久| 日本xxxxwww| 久热精品视频在线观看一区| 成人日韩在线观看| 久久99欧美| 影音先锋亚洲一区| 中文字幕一区二区三区四| 国产三级欧美三级| 国产微拍精品一区| 欧美不卡一二三| 成人福利网站| 国产精品美乳在线观看| 蜜桃成人av| 无码精品a∨在线观看中文| 成人h动漫精品| 男女做暖暖视频| 91精品久久久久久久91蜜桃 | 午夜精品美女自拍福到在线| 色成人综合网| 亚洲精品在线视频观看| 久久一二三区| 欧美色图亚洲激情| 姬川优奈aav一区二区| 亚洲成人一级片| 九九热精品视频国产| 无码国模国产在线观看| 992tv成人免费观看| 久久99精品国产.久久久久久| 女人十八毛片嫩草av| 在线日韩av片| 成年人在线观看| 国产精品视频地址| 手机在线一区二区三区| 五月婷婷之婷婷| 亚洲日本va午夜在线影院| 国产又色又爽又黄又免费| www国产精品视频| 精品国产一级| 国产精品一色哟哟| 91丨九色丨蝌蚪富婆spa| 青青青国产在线| 亚洲人成电影在线观看天堂色| 小视频免费在线观看| 青青草成人网| 久久国产精品色婷婷| 国产探花视频在线| 欧美精品久久久久久久久老牛影院| 蜜芽在线免费观看| 91大片在线观看| 一本久道久久综合狠狠爱| 女尊高h男高潮呻吟| 欧洲中文字幕精品| v片在线观看| 成人自拍视频网站| 欧美成人有码| 亚洲精品鲁一鲁一区二区三区 | 久久午夜色播影院免费高清 | 亚洲成人激情图| 绿色成人影院| 午夜精品短视频| 国产乱国产乱300精品| 国产精品一区二区6| 亚洲最新av在线网站| 久久九九精品视频| 国产精品50p| 国产精品麻豆久久久| 精品毛片在线观看| 日本成人在线视频网址| 小说区亚洲自拍另类图片专区 | 国产女人18毛片水真多| 欧美日韩国产成人| 要久久爱电视剧全集完整观看| 九一精品久久久| 亚洲v日本v欧美v久久精品| 久草视频视频在线播放| 亚洲伊人久久大香线蕉av| 日韩视频在线一区二区三区| 黄色国产在线播放| 欧美v日韩v国产v| 成人涩涩视频| 欧美黑人经典片免费观看| 亚洲国产激情av| 人妻精品一区二区三区| 国产精品亚洲欧美导航| 在线视频观看日韩| а天堂中文在线资源| 国产一级精品在线| 国产精品111| 色一区av在线| 私拍精品福利视频在线一区| 欧洲在线免费视频|