c語言問題求解p 2)是什麼意思,正確答案應該是什麼,謝謝

2021-03-11 04:31:32 字數 4197 閱讀 6348

1樓:萬東你好

答案是64.解釋:p[i]=&a[i*3]可得p[2]=&a[6],即p[2]儲存a[6]的地址,p[2]的型別為int*,即p[2]指向的是int型別,p[2]+2則是版p[2]向下偏移權2個int距離,即p[2]+2=&a[8],則*(p[2]+2)=a[8]=64

2樓:一口沒水的枯井

執行結果是:64

首先p是一個指標的陣列,即一個可以存放3個指標的陣列因為地回址就是指標,答指標只是地址一個形象化的表達而已。所以也就是p可以存放3個地址

其中p[2]代表 這個指標陣列中的第3個元素,p[2]存放的是a[6]的地址

p[2]+2得到a[8]的地址

*(p[2]+2) 就是 取a[8]的值,故為64

3樓:淡若親風

int *p[3]表示指標陣列,每個元素都是指標,顯然有p[2]=&a[6]

所以*(p[2]+2)也就是*(&a[6]+2)也就是a[8],答案是64

4樓:匿名使用者

p[2]=&a[6]

&a[6]+2=&a[8]

*&a[8]=a[8]=64

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

5樓:自我程式設計

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

在這裡p就是行指標

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

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

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

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

6樓:橙喵喵好

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

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

c語言*(p+2*i是什麼意思)

7樓:匿名使用者

在指標p的地址上 加 (變數i乘以2)。

然後這個地址指向的內容就是結果了。

8樓:聽不清啊

比*p所指的單元后移2i個單元中所儲存的值。

c語言中*(*(p+1)+2) 什麼意思?具體怎麼表示的? 20

9樓:一個青年

*(*(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)。

10樓:匿名使用者

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

假設: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 ..

11樓:洛雨曦

舉例: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]這個元素

12樓:等待阿若

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

13樓:匿名使用者

去查「指向指標的指標」

14樓:

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

好拗口啊,呵呵

c語言中(p-2)[0]是什麼意思

15樓:

顯然p是陣列指標。籠統不好說,給你舉個例子:若有int a=,*p=a+7;,那麼(p-2)[0]的值就是6——因為p=a+7使p指向了8,再向前挪2位就是6。

c語言puts(p+2)裡的p+2是什麼意思?

16樓:陳釗翔

如果p是普通變數 就在數學值上加2

如果p是地址 就向前偏移兩個單位地址

C語言問題,c0是什麼意思

在c語言中會遇到不同型別的資料進行運算,如果一個運算子的兩側資料型別不同,則先自動進行型別轉換,使兩者具有同一種型別,然後進行運算,規律為 1 運算的兩個數中有一個為float或double型,結果是double型,因為統一將所有float型資料都先轉換為double型,然後進行運算。2 如果int...

p2p是什麼意思,P2P是什麼意思

康博士1分鐘告訴你 p2p是什麼意思 person to person p2p是英文peertopeerlending 或peer to peer 的縮寫,意即個人對個人 夥伴對夥伴 又稱點對點網路借款,是一種將小額資金聚集起來借貸給有資金需求人群的一種民間小額借貸模式。屬於網際網路金融 itfin...

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

的優先順序比 bai 高,1 du2 3 1 2 3 1二 位zhi邏輯運算子 符號dao 描述 按位與 按位或 版 按位異或 按位取反 表中權除去最後一個運算子是單目運算子,其他都是雙目運算子。這些運算子只能用於整型表示式。位邏輯運算子通常用於對整型變數進行位的設定 清零 取反 以及對某些選定的位...