c語言中p12什麼意思?具體怎麼表示的

2021-03-07 08:45:22 字數 4407 閱讀 7982

1樓:乙個青年

*(*(p+1)+2)為

二維陣列用指標表示的形式,相當於陣列元素num[1][2]

二維陣列本質上是以陣列作為陣列元素的陣列,即「陣列的陣列」,型別說明符 陣列名[常量表示式][常量表示式]。二維陣列又稱為矩陣,行列數相等的矩陣稱為方陣。

對稱矩陣a[i][j] = a[j][i],對角矩陣:n階方陣主對角線外都是零元素。

二維陣列a[m][n],這是乙個m行,n列的二維陣列。設a[p][q]為a的第乙個元素,即二維陣列的行下標從p到m+p,列下標從q到n+q,元素a[i][j]的位址計算方法如下:

按「行優先順序」儲存時,位址計算為:loc(a[i][j]) = loc(a[p][q]) + ((i − p) * n + (j − q)) * t

按「列優先順序」儲存時,位址計算為:loc(a[i][j]) = loc(a[p][q]) + ((j − q) * m + (i − p)) * t

存放該陣列至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組

擴充套件資料:

指向二維陣列的指標變數設二維陣列為a[m][n]

設有整型二維陣列a[3][4]如下:

1000 1001 1002 1003

1004 1005 1006 1007

1008 1009 1010 1011

設陣列a的首位址為1000,各下標變數的首位址及其值如上列出。

c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a[0],a[1],a[2]。每乙個一維陣列又含有四個元素。

例如a[0]陣列,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。

陣列及陣列元素的位址表示如下:a是二維陣列名,也是二維陣列0行的首位址,等於1000。a[0]是第乙個一維陣列的陣列名和首位址,因此也為1000。

*(a+0)或*a是與a[0]等效的,它表示一維陣列a[0]0號元素的首位址。也為1000。&a[0][0]是二維陣列a的0行0列元素首位址,同樣是1000。

因此,a,a[0],*(a+0),*a,&a[0][0]是相等的。

同理,a+1是二維陣列1行的首位址,等於1004。a[1]是第二個一維陣列的陣列名和首位址,因此也為1004。&a[1][0]是二維陣列a的1行0列元素位址,也是1004。

因此a+1,a[1],*(a+1),&a[1][0]是等同的。由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。

此外,&a[i]和a[i]也是等同的。因為在二維陣列中不能把&a[i]理解為元素a[i]的位址,不存在元素a[i]。

c語言規定,它是一種位址計算方法,表示陣列a第i行首位址。由此,我們得出:a[i],&a[i],*(a+i)和a+i也都是等同的。

另外,a[0]也可以看成是a[0]+0是一維陣列a[0]的0號元素的首位址,而a[0]+1則是a[0]的1號元素首位址,由此可得出a[i]+j則是一維陣列a[i]的j號元素首位址,它等於&a[i][j]。

由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由於*(a+i)+j是二維陣列a的i行j列元素的首位址。該元素的值等於*(*(a+i)+j)。

2樓:匿名使用者

按優先順序一步一步的計算:

假設:int a[3]=, *p; p=a; 先定乙個指標p指向a陣列首位址。

解析下含義:

最裡的的是*(p+1)表示,指向位址數值+1後內位址的值顯示出來是2,指標指向不變還是指向陣列首位址。也就是p+1是指向了a[1]的位址,p還是指向a[0]位址。可以安陣列計算表示為p[1].

更直接。

下一步(p[1]+2) 這個是是數值p[1]=2 的值 加上 2 = 4

.但是*(4)。也就是定義的位址為4上的值。 這種操作會報錯,所以假設不成立,p不是變數指標而是指標的指標

。重新假設int a[2][3]=,} **p; p=a; 同樣先定乙個指標p指向a陣列首位址

**p: 是指標的指標;*p指向的是指標的位址。也就是a[0]的位址。a[0]對陣列a[2][3]也是指標。

同樣一步一步化解:*(p+1),也是指向位址下乙個位址的值。因為p是指向二維陣列,下乙個位址值,是a[1]的位址也就是第一排的首位址。同樣可以化成:p[1].

*(p[1]+2) ,就是把p[1]看成指標q,那同於*(q+2)便於理解。同樣花簡為q[2].指向第一排資料的第3個資料也就是,6.

因此*(*(p+1)+2)=p[1][2] 也就是陣列a中的6 ..

3樓:洛雨曦

舉例:int p[2][3];這是個二維陣列2行3列,而用指標形式*(*(p+1)+2)表示的是p[1][2]這個元素,即:*(p+1)指向的是第一行(p[1]),*(p+1)+2表示的是第一行第二列的位址,而*(*(p+1)+2)就是取第一行第二列的內容也就是p[1][2]這個元素

4樓:等待阿若

推薦你去c語言貼吧去提問,**有專業的人會告訴你真的,不適合在知道上問

5樓:匿名使用者

去查「指向指標的指標」

6樓:

以位址p+1的值,再加上2組成的位址裡面的值

好拗口啊,呵呵

請教乙個c語言題目,後面那個*(*(p+2)+1)什麼意思?這題怎麼寫

7樓:自我程式設計

int (*p)[2]=a;就是定義了乙個指向2維陣列的的指標,p自增跨度是2。

在這裡p就是行指標

p的值專就是指向屬陣列的指標。

所以p+2就是指向陣列的指標(p自增跨度2)。

所以*(p+2)+1就是&a[2][1]的位址。

所以*(*(p+2)+1)就是80。

8樓:橙喵喵好

(*p)[2]是乙個陣列指標,指向乙個含有兩個元素的陣列的位址。

由題意知道現在這個p指標指向a,a代表陣列的首位址。所以p相當於a,*(*(p+2)+1)等價於a[2][1],也就是80。

c語言程式指標p[-1] 表示什麼意思呀

9樓:請留言

呵呵,程式中出現這種用法說明這個程式設計師比較自我。一般不見以這樣用。

要根據上下文判斷才知道,不過從字面意思來說就是去p所代表的記憶體位址的前一塊。

比如:int num[10] = ;

int *p = num+2;//此時p代表的是num[2]的位址,p[0]就是num[2],p[-1]就是num[1],p[-2]就是num[0];

但是p[-3]就錯了,因為你訪問了乙個未知的位址,會出現嚴重錯誤的。

10樓:匿名使用者

沒見過,我跟你一起等答案

在c語言的指標運算中*(p+1)與p+1有什麼區別 p是指標

11樓:匿名使用者

一、bai

指代不同

1、*(p+1):表示du具體的數值

。zhi

2、p+1:表示記憶體位址dao。

二、指向的

值不同版

1、*(p+1):指標p所指權向的記憶體位址單元的下乙個記憶體位址單元中的值。

2、p+1:指標p所指向的記憶體位址的下乙個記憶體位址。

三、記憶體表示不同

1、*(p+1):*的優先順序比+的優先順序高,所以*p+1在編譯器中是先取出p指向的int值然後加1。

2、p+1:直接將記憶體中指向的位址加1,就是將要指向的位址。

12樓:天雲一號

*(p+1)表示具體的數值,指標p所指

向的記憶體位址單元的下乙個記憶體位址單

元中的值;

p+1 表示地內址,指標容p所指向的記憶體位址的下乙個記憶體位址。

可以通過下面的例項來理解*(p+1)與p+1之間的區別:

int *p;  // 定義乙個int型別的指標pint a[3]=; // 定義乙個int型別的陣列a,並進行初始化p = a;  // 使指標p指向陣列a的首位址printf("%d", *(p+1));  // 輸出2,等價於a[1]

printf("%x", p+1);     // 以16進製制形式輸出a[1]的位址(如08ff12),等價於&a[1](&為取位址運算子)

13樓:天河

p+1是指p指標加1即p的下乙個指標,*(p+1)是指p+1所指向的物件

14樓:h資

舉個例子吧 比如a[5]=;*(p+1)指的是a[1]即4,而*p+1指a[o]加1即3

15樓:匿名使用者

當然有區別 指向指標的指標*(p+1) p+1就p的下乙個指標

c語言中p是什麼意思,C語言中 p 是什麼意思

p p 首先,它是乙個 陣列,陣列裡面儲存的是指標 p 則不同,首先它是版乙個指標,然後權,它指向乙個陣列,但通常,再定義的時候需要指定所指向陣列的大小。示例 include int main int argc,char argv char指標陣列,兩個元素,分別指向hello和worldprint...

c語言中12ld是什麼意思,C語言中c是什麼意思

12表示的是輸出時佔12個位 置的長度,也就是如果數字是 12.345 它只有五個位,但是卻佔了12位的長版度,其它位在輸出權上用空格來填充 比如說執行下面的程式 include stdio.h void main 執行結果為 2press any key to continue而把12去掉又不同 ...

c語言中是什麼意思,C語言中 是什麼意思?

你好,a b表示a a b a b表示a a b 是c語言的運算子部分的知識 其中 是結構體指標的知識 條件運算子 a?b c表示a為真則執行b,否則執行c 運算子的知識,叫自反賦值運算子 a b相當於a a b a b相當於a b 是指向成員運算子 不懂可以問我 c語言中輸出語句中用到 c,表示輸...