- N +

指針指向二維數(shù)組的幾種方法 二維數(shù)組如何用指針表示

今天給各位分享指針指向二維數(shù)組的幾種方法的知識,其中也會對二維數(shù)組如何用指針表示進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

如何在c語言二維數(shù)組中使用指針

對于a[i][j](二維數(shù)組的大小為n×m)而言,首先要搞清楚行指針和列指針行指針:&a[i]或者a+i指向行,&a[i]=&*(a+i)=a+i列指針:a[i]或*(a+i)指向列,a[i]等價于*(a+i)元素的引用方式有如下三種方式1.通過地址引用二維元素*(&a[i][j]),*(a[i]+j),*(*(a+i)+j),*(a[0]+m*i+j)*(&a[0][0]+m*i+j)(*(a+i))[j]2.建立一個指針數(shù)組引用二維元素int*p[3],a[3][2],i,j;for(i=0;imain(){intscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};inti,j;printf("輸入學生號:0-2");scanf("%d",&i);printf("thescoreofNo.%dare:\n",i);for(j=0;jmain(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int*p;for(p=a[0];p

main(){intscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};inti,j;printf("輸入學生號:0-2");scanf("%d",&i);printf("thescoreofNo.%dare:\n",i);for(j=0;jmain(){intscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};inti,j,*p;printf("輸入學生號:");scanf("%d",&i);printf("thescoreofNo.%dare:\n",i);for(p=score[i];p

指向整型數(shù)組的指針如何用

數(shù)組指針(也稱行指針)

定義int(*p)[10];

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

例:int(*p)[4];//該語句是定義一個數(shù)組指針,指向含4個元素的一維數(shù)組。所以數(shù)組指針也稱指向一維數(shù)組的指針,亦稱行指針。

指針數(shù)組

定義int*p[n];[]優(yōu)先級高,先與p結(jié)合成為一個數(shù)組,再由int*說明這是一個整型指針數(shù)組,它有n個指針類型的數(shù)組元素。這里執(zhí)行p+1時,則p指向下一個數(shù)組元素,這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變量可以用來存放變量地址。但可以這樣*p=a;這里*p表示指針數(shù)組第一個元素的值,a的首地址的值。如要將二維數(shù)組賦給一指針數(shù)組:int*p[3];inta[3][4];p++;//該語句表示p數(shù)組指向下一個數(shù)組元素。注:此數(shù)組每一個元素都是一個指針for(i=0;i<3;i++)p[i]=a[i]這里int*p[3]表示一個一維數(shù)組內(nèi)存放著三個指針變量,分別是p[0]、p[1]、p[2]所以要分別賦值。

這樣兩者的區(qū)別就豁然開朗了,數(shù)組指針只是一個指針變量,似乎是C語言里專門用來指向二維數(shù)組的,它占有內(nèi)存中一個指針的存儲空間。指針數(shù)組是多個指針變量,以數(shù)組形式存在內(nèi)存當中,占有多個指針的存儲空間。

C語言30天核心突破

二維數(shù)組如何用指針表示

二維數(shù)組可以看成是指針的指針,b[][]=**b;比如b[2][5];它是一個2行5列的二維數(shù)組,也可以看成是二級指針,一級存放的是行指針,然后每個行指針里面其實又是指向了5個列元素。*(*(b+i)+j),*(b+i)是先取行指針,然后+j偏移到所要的列,然后*取值就得到i行j列的數(shù)據(jù)了。

c語言指針數(shù)組的用法

一維數(shù)組指針

一維數(shù)組的指針是直接將一維數(shù)組的首地址賦予指針變量,之后通過指針變量的運算逐漸輸出一維數(shù)組中的各個元素的值。

例如:inta[20];

int*p;

因為數(shù)組名相當于一個指針指向的就是一維數(shù)組的首地址(例如a[0]),所以可以直接將數(shù)組名賦予指針變量(例如p=a),無需加取地址符&;也可以讓指針變量指向第一個元素的地址(例如p=&a[0]);即p=a與p=&a[0]是等價的,(應(yīng)當要注意的是:p=a是將數(shù)組首元素的地址賦給指針變量,而非將數(shù)組a的各元素的值賦給指針變量)

如果一個指針變量p已經(jīng)指向數(shù)組中的一個元素,則p+1指向數(shù)組中的下一個元素,p-1指向的是數(shù)組中的上一個元素。(注意:執(zhí)行P+1或P-1時,并不是將P的值簡單的加1,而是加上一個數(shù)組元素所占用的字節(jié)數(shù),例如:float型,每個元素占4個字節(jié),所以p+1意味著使p的地址加4個字節(jié),以便讓其指向下一個元素)

這里的a+i與p+i是等價的,也可以用數(shù)組名進行運算;

e

*(a+i)==*(p+i);

二維數(shù)組指針

令inta[2][3]={{1,2,3},{4,5,6}}

在二維數(shù)組中數(shù)組名指向數(shù)組的首元素,但是不是簡單的表示一個簡單的元素,而是由多個元素所組成的一維數(shù)組,因此數(shù)組名指的是二維數(shù)組首行(即下標為0的那一行)的首地址,a+1即表示下標為1的那一行元素,又因為數(shù)組名代表首元素的地址,所以a即代表二維數(shù)組中a[0][0]的值,a+1即a[1][0]的值。a[0]等價于*(a+0),a[1]等價于*(a+1),(a+1)+1的值即&a[1][1]。要想得到a[1][1]的值,就要再進行取值,即(a[1]+1)或*((a+1)+1)為a[1][1]的值。(注意:(a+i)與a[i]是等價的)

切記二維數(shù)組名是指向二維數(shù)組首行,而非指向二維數(shù)組a[0][0];

二維數(shù)組在指向行的指針前加*,就轉(zhuǎn)化為了指向列的指針,反之,在二維數(shù)組指向列的指針前加&,就轉(zhuǎn)化為了指向行的指針.(例如:&a[i]或a+i指向行.而a[i]或*(a+i)則指向列)

在定義時的int(*p)[4]的意思是指針變量p指向包含四個整型元素的一維數(shù)組,即在二維數(shù)組中一共有四行元素

二維指針數(shù)組怎么拷貝

一般用公式=IF(D3>=500,D3,0)

好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!

返回列表
上一篇:
下一篇: