国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

辨析指針數(shù)組與數(shù)組指針

2017-04-12 00:35張小軍
關(guān)鍵詞:運(yùn)算符數(shù)據(jù)類型數(shù)組

張小軍, 張 晶

(河南教育學(xué)院 信息技術(shù)系,河南 鄭州 450046)

辨析指針數(shù)組與數(shù)組指針

張小軍, 張 晶

(河南教育學(xué)院 信息技術(shù)系,河南 鄭州 450046)

在C語言代碼的編寫過程中,指針數(shù)組與數(shù)組指針是經(jīng)常用到的數(shù)據(jù)類型,其形式相近而意義迥然.正確理解這兩個概念是使用C語言寫好代碼的前提.通過實(shí)例比較,闡述指針數(shù)組與數(shù)組指針的差異.

指針;指針數(shù)組;數(shù)組指針;地址;內(nèi)存

由于C語言具有高級程序設(shè)計語言的特點(diǎn),又具有匯編語言的特點(diǎn),所以它不但可以作為系統(tǒng)設(shè)計語言用來編寫系統(tǒng)軟件,應(yīng)用于單片機(jī)以及嵌入式系統(tǒng)開發(fā)等,還可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機(jī)硬件的應(yīng)用程序,處理海量的數(shù)據(jù),被廣泛應(yīng)用于各類信息的處理. 而指針數(shù)組與數(shù)組指針則是C語言中的重要數(shù)據(jù)類型,經(jīng)常被使用.因?yàn)樗鼈冃问较嘟?,很容易被混?下面從指針的概念開始,辨析指針數(shù)組與數(shù)組指針這兩個概念,繼而給出實(shí)例闡述這兩個概念的區(qū)別[1].

1 指針、指針數(shù)組與數(shù)組指針的概念

1.1 指針

指針的本質(zhì)是一個地址,表現(xiàn)為一個十六進(jìn)制的數(shù)據(jù).在內(nèi)存中,它占據(jù)4個字節(jié)的存儲空間,是變量在內(nèi)存當(dāng)中的實(shí)際地址.一般通過指針位置的變化實(shí)現(xiàn)對指針?biāo)赶蚩臻g的內(nèi)容操作,示例中變量和指針內(nèi)存空間示意圖如圖1.

圖1 變量a和指針p的內(nèi)存地址

1.2 指針數(shù)組

指針數(shù)組(pointers of arrays),即用于存儲指針的數(shù)組,也就是數(shù)組元素都是指針.若數(shù)組中的每一個元素都是指針,則該數(shù)組被稱為指針數(shù)組.譬如,若有3個元素的數(shù)組,每個元素都是指向整型變量的指針,那么其類型定義的形式為int *p[2].換句話說,就是數(shù)組p中的元素都是int型的指針.一般情況下,我們使用*p[2]的形式,但有時候也會看到*(p[i])這種表示形式,這兩者本質(zhì)是一樣.因?yàn)?,在C語言的語法定義中,多個運(yùn)算符之間是有優(yōu)先級規(guī)定的.這里的運(yùn)算符“[]”優(yōu)先級高于運(yùn)算符“*”.

int *p[3]; //是一個指針數(shù)組,定義了3個指針,分別為p[0]、p[1]、p[2]

int a0=1,a1=2,a2=3;

p[0]=&a0;p[1]=&a1;p[2]=&a2;

其內(nèi)存空間示意圖如圖2.

圖2 指針數(shù)組在內(nèi)存中的地址

1.3 數(shù)組指針

數(shù)組指針(arrays of pointers),就是指向數(shù)組的一個指針.變量的定義形式:

數(shù)據(jù)類型(*變量名)[元素個數(shù)];

例如:int (*p);

由于“()”優(yōu)先級高,首先說明p是一個指針,指向一個整型的一維數(shù)組,這個一維數(shù)組的長度是4,也可以說是p的步長.也就是說執(zhí)行p+1時,p要跨過4個整型數(shù)據(jù)的長度[2].

其內(nèi)存空間示意圖如圖3.

圖3 數(shù)組指針在內(nèi)存中地址

2 指針數(shù)組與數(shù)組指針的應(yīng)用分析

2.1 代碼示例

#include

main()

{

int i; //申明一個變量i

int *p[6]; //申明一個指針數(shù)組*p[6]

int (*q)[6]; //申明一個數(shù)組指針(*q)[6]

int s[6]={1,7,3,4,8,2}; //創(chuàng)建一個數(shù)組s[6]并賦值

q=s; //將數(shù)組s[6]賦值給數(shù)組指針(*q)[6]

for(i=0;i<6;i++) //創(chuàng)建一個for循環(huán),將數(shù)組s[6]循環(huán)

*p[i]=s[i]; //賦值給指針數(shù)組*p[6]

printf("*p[3]=%d (*q)[3]=%d s[3]=%d",*p[3],(*q)[3],s[3]);

//輸出*p[3],(*q)[3],s[3]

getch();

}

輸出:

*p[3]=4

(*q)[3]=4

s[3]=4

2.2 指向一維數(shù)組的指針變量

定義方法:*指針變量名,即*p.

#include

main()

{

int a[5]={1,2,3,5,7};

int *p=a, i ;

for(i=0,i<5,i++)

printf("%4d",p[i]);

getch();

}

輸出:1 2 3 5 7

2.3 指向二維數(shù)組的指針變量

定義方法:(*指針變量名)[長度],即(*p)[n].

main()

{

Int i,j,m,n,max;

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

m=0;n=0;

max=**a;

for(i=0;i<4;i++)

{

printf(" ");

for(j=0;j<4;j++)

{

printf("%5d",*(*(a+i)+j));

if(max<*(*(a+i)+j))

{

max=*(*(a+i)+j));

m=i;i=j ;

}

}

}

printf(" max is :a[%2d][%2d]=%5d",m,n,max);

getch();

}

輸出:

1 2 3 4

5 6 7 8

9 10 11 12

max is :a[2][3]=12

3 結(jié)束語

數(shù)組指針是指向數(shù)組的,而指針數(shù)組中的每一個元素都是指針.因?yàn)橹羔樀谋举|(zhì)是地址,所以,不管是哪種類型的指針,只要是類型匹配地址就可以存放.就像指針變量可以指向某個基本類型的變量一樣,也可以定義指針變量來指向數(shù)組與數(shù)組元素.數(shù)組各個元素在內(nèi)存中的存放是連續(xù)的,所以用指向數(shù)組或數(shù)組元素的指針變量來使用數(shù)組,令代碼的編寫與執(zhí)行效率更高.

[1] 韓曉新.C語言中的指針教學(xué)[J].常州教育學(xué)院學(xué)報(綜合版),2001,15(9):21.

[2] 宋靈香,趙靜,劉運(yùn)奇.分析指針數(shù)組與數(shù)組指針的區(qū)別和應(yīng)用[J].甘肅高師學(xué)報,2012,17(2):51-52.

Differentiate the Array of Pointers and Pointer of Arrays

ZHANG Xiaojun, ZHANG Jing

(DepartmentofInformationTechnology,HenanInstituteofEducation,Zhengzhou450046,China)

In the coding process of C language, arrays of pointers and pointers of arrays are freequently used data types. The form and meaning of them are very similar. A correct understanding of these two concepts is the premise of using C language to write code. Based on examples, expounds the difference between arrays of pointers and pointers of arrays.

pointers; array of pointers; pointer of array; address; memory

2016-10-27

河南省高等學(xué)校重點(diǎn)科研項目計劃(16A520008)

張小軍(1980—),男,河南鄭州人,河南教育學(xué)院信息技術(shù)系副教授,主要研究方向:計算機(jī)應(yīng)用.

10.3969/j.issn.1007-0834.2017.01.016

TP312

A

1007-0834(2017)01-0068-04

猜你喜歡
運(yùn)算符數(shù)據(jù)類型數(shù)組
JAVA稀疏矩陣算法
老祖?zhèn)魇诨具\(yùn)算符
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
用手機(jī)插頭的思路學(xué)習(xí)布爾運(yùn)算符
Excel數(shù)組公式在林業(yè)多條件求和中的應(yīng)用
基于SeisBase模型的地震勘探成果數(shù)據(jù)管理系統(tǒng)設(shè)計
線上眾籌產(chǎn)品的特征分析與研究
相似度計算及其在數(shù)據(jù)挖掘中的應(yīng)用
C語言中自增(自減)運(yùn)算符的應(yīng)用與分析