關於乙個指標陣列的問題,無法解決

2025-04-03 05:55:24 字數 3040 閱讀 3672

1樓:

你的程式有問題,你在申請記憶體的時候,先p=(int **malloc(row *sizeof(int));首先這裡有個問題是你的強轉是錯誤的,你最多強轉為int*,要麼你裡面寫sizeof(int*),然後你p[i]=(int *)malloc(col* sizeof(int));你這樣申請記憶體的話,在記憶體中你申請畝渣絕的是什麼樣的呢?先假設你是5行6列的,那麼你的記憶體首先有個元素為迅姿5的陣列,每個元素的值都是乙個指標梁猜,指向乙個有6個元素的陣列,實際上你申請的記憶體有6塊,不一定是連續的。

而你在使用的時候,你以為你申請的記憶體是1塊有30個元素的連續區間,這與你的實際申請是不相符的,所以你在使用的時候其實已經很多地方記憶體越界了。

2樓:橋慕悅

首先 p=q;是滑跡伏不行的州嫌 因為q是未定義的指標,p[0]指向不明 所以不行。

對於 q=&a;這裡的q指的是q[0];是個指標信攜需要存放位址的 所以是&a 就是a[3]的首位址了。

q[0]=a是不行的 a是指a[0],不是乙個真確的位址。

c語言陣列指標的問題

3樓:思再思

a是二維陣列首位址,是指向位址的位址指標。p是一維位址,指向二維陣列第0行位址(0開始計數)第1列(0開始計數)。

優先順序》()所以表示式實際是:

p-1)乘以*(p+1+1)

p指向值為「2」的指標,p-1指向1的指標,則*(p-1)=1;

p+1+1)實際指向了a陣列最後乙個值,最後乙個值未初始化預設為0。

則兩者相乘為0。

4樓:

應該是0吧,看成*(p-1)×(p+1)[1]就行了。

5樓:網友

這個地方其實就是a[0][0] x a[1][1]=1*0=0

c中指標陣列的乙個問題,解答說明詳細的理由

6樓:網友

好麻煩啊,我就簡單說了,1.指標p指在s,就是c的位置。

2.因為p--了,所以下一行的p是b開始的, 我錯了。

3.迴圈是p指標從b到a到null,到null就結束p-s是指p到s[0]的字元長度,當p指標沒到null前都是可行的5.輸出從p指標指的地方開始,覺得有道理,就採納吧。

c語言陣列指標問題

7樓:網友

拿起你的課本 翻到指標和多維陣列那一節 認真看幾遍。

prt是乙個指向二維陣列int a[4][3]的指標 和a一樣 指向a[0]

a[0]是a[0][0]的位址 所以p指向a[0][0]

對乙個指標加一,會對原來的數值加上乙個對應型別大小的數值。a和prt所指向的物件是三個int, 而p所指向的物件是乙個int.

*(prt+1)+2) prt+1指向a[1] 而a[1]的值是a[1][0]的位址 所以*(prt+1)是指向a[1][0]

所以*(prt+1)+2指向a[1][2].

因為陣列裡面各元素是連續儲存的 所以*(p + 5)實際指向了a[1][2]

第三個和第乙個差不多。

第四個*ptr是a[0][0]的值 *ptr + 1 指向a[0][1] 另外你好像少了乙個反括號。

指標陣列問題

8樓:網友

我自己找的,不知道對不對。

name【】是定義乙個陣列,這個陣列中儲存的內容是char *型別的,也就是指向字元的指標。那麼單純說陣列,name代表的就是陣列首位址,也就是name第乙個元素所在的位址,name+1就是第二個元素所在的位址,比如name是從位址1000開始的,那麼name就是1000,name呢卻是1000這個位址裡邊儲存的內容,這個內容是乙個指向字元的指標,是另乙個位址。

所以你輸出name會輸出1000,但是輸出name會輸出1000這個位址儲存的值的那個位址的值,比如1000這個位址裡邊儲存的值是4000,4000這個位址儲存的值是『a',那麼name就代表1000,name代表的是1000這個位址儲存的值作為位址,也就是4000這個位址的儲存的值,就是』a'。

name+i)呢,就像上邊說的,name代表陣列name【】的首位址1000,那麼name+i就代表name【i】所在的位址,是位址不是值,比如1000, *是括號中位址的值指向的位址 的值,比如1000這個位址的值是3500,那麼*(name+i)就是3500這個位址的值。

9樓:暗流

指標的問題確實挺讓人頭疼。這裡name是乙個char型指標的陣列,陣列裡每個單元儲存的都是乙個char型指標。如果把name當成乙個指標來看的話應該是個指向char型指標變數的指標。

你printf的時候當然是想輸出字串啊,所以要從name陣列裡找到物件的char型指標才行。如果非要學究一下,name它是個二級指標。

關於指標與陣列的問題

10樓:網友

首先,你的程式有個很大的問題,就是字元陣列宣告的時候,二維陣列少分配了乙個結束符'\0',導致後面在字元輸出的時候,會有意外的結果,如下修改:

char str[2][6] = ,

下面依次解釋你不明白的那幾行:

第7行,p是char型別指標,此行**的意思就是,從p所指向的位址開始,讀取資料,並轉換成char型別輸出,直到遇到'\0'結束符(這也是為什麼在開始要給陣列加結束符的原因),所以結果是"bcde",注意之前++p,已經把p的位址增加了1,所以現在p指向的是'b'

第13行,同理,但由於之前*p = str[0][0],p當前指向的位址裡的資料已經變成了str[0][0],也就是'a',所以輸出"acde"

在13行的基礎上,p的位址又增加了1,則其指向的正是'c',而*運算子是取p所指向位址的資料,是char型別的,所以結果只顯示'c'

11樓:網友

3行是入口函式,你的每個c++檔案都是要這麼寫的。虛擬機器只認這個名字。

14行是++先和指標p結合,p自增,移動到記憶體的下乙個位置指向c。*和間接運算子解除引用也就是取出指標p指向的記憶體中的值。

法律無法解決的法律問題,一個法律無法解決的法律問題

如果你的債權接近或大於a公司的註冊資本,可以申請對該公司破產清算,股東在註冊資本範圍內承擔清算責任。給你說個 簡單的辦法 如果還有人被其公司這樣騙過 你們可以一起起訴他 如說是隻有你一個人的話 難。對於這種 一般3個人或者公司同時 起訴其公司 勝訴應該在 75 以上 a公司是法人就的走破產程式啊 法...

請教乙個關於解決頭髮少的問題

用茶水洗頭,而且最好是泡的時間很長的隔夜的茶,有點發黃的那種。洗的時候邊洗邊用手屢頭髮,從頭髮根部的頭皮開始,不用屢到下面,一直堅持在根部拽就可以。想長就拽 真的,洗完之後你會發現頭髮長了一點點。但是驚喜的是,大約三天或者一週左右時間後頭發會自動的開始瘋長。如果長期堅持此法,還可以使頭髮變多變密。到...

如何定義指向函式的指標陣列,如何定義一個指向函式的指標陣列

這個用typedef可以完成 先定義一個函式指標的型別 typedef void pfun 然後用這個型別pfun定義一個陣列 pfun ptr 5 裡的數字是陣列元素的個數,依情況而定 這兒用5做例子 這樣ptr就是一個指向函式指標的陣列。對於 把一個指標強制定義 這我還沒聽過這個說法,只聽過把指...