二維陣列 指標 錯誤,關於多維陣列的指標的疑問

時間 2025-02-26 03:15:17

1樓:孤舟釣客

#include

int **yunyundata=null;

int testone()

return 0;

int yunyun()

int i,j;

testone();

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

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

printf("%d,%d,is:%d",i,j,yunyundata[i][j]);

return 0;

int main()

int i,j,k=0;

int yunyun[2][2];

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

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

k=i*3;

yunyun[i][j]=k+j;

yunyundata=(int **yunyun;

return 0;

問題:/1.沒有主函式,故會出 unresolved external symbol _main錯誤。

只宣告沒定義也會出link錯誤。

3.函式yunyun沒被呼叫,起不到測試作用。

記著測試乙個函式正確與否要寫個主函式。c程式是必須有主函式的,這是整個程式的入口。

2樓:網友

在yunyundata=(int **yunyun;前應先分配** yunyundata的空間--即將二維指標定義為二維資料,包括上下界,就可了。

3樓:網友

沒有主函式,把int yunyun()改成int main()試試。

關於多維陣列的指標的疑問

4樓:翠霽竭依心

這就是說二維陣列的行位址與列位址的問題。

對於二維陣列有行位址與列位址與具體元素,行位址--列位址---具體元素,他們的級別依次遞減,a[3][3],如果要宣告乙個指標指向陣列a,應該是。

int*p,或者是(*p)[3],第乙個是宣告乙個二級指標因為2維陣列的陣列名是乙個2級指標,第二個是宣告乙個指向乙個具有3個元素的一位陣列,他們都可以這樣。

p=a。對2維陣列a是行位址,取*就變成了列位址面對列位址取*就成為具體元素。所以取*是降級運算。

你第乙個問題,因為p是二級指標,對p取*就變為一級指標,他們無法賦值,等號左右必須是同一級別,知道了吧。

第二個問題,對於行位址取*或者取下標[

就使行位址變為列位址,列位址取內容&就變為行位址,但是比注意取*

下標。之後這個值對於2維陣列還有意義沒有。。

應該幫得到你。。。

請教c++二維陣列和指標的簡單問題。

5樓:網友

1.設有int a[3][2] =, (p)[2]=a1;則*(*p+2)+1)的值是__1__。

答案6問題:有人說,p是含有兩個元素的一維陣列,怎麼是含有兩個元素呢?

然後請解釋一下(*p)[2]=a1,*(p+2)+1和求解過程。

int a[3][2] =,嚴格表示應該為:

int a[3][2] =, //a[0]

/a[1]a[2], 三組數,每組兩個。

int (*p)[2]=a1的正確寫法為:int (*p)[2]=a[0] ;p是指標,其所指向的位址中的資料型別為「兩個int」,即p指向的位址中的資料可以看成是 「乙個含有兩個元素的陣列" 。這樣描述,你應該可以看的懂。

p+0 --a[0]

p+1 --a[1]

p+2---a[2]

p+2) 指向a[2][0]的位址。

p+2)+1指向a[2][1]的位址。

*(p+2)+1)就是a[2][1]的值 = 6

2,.有二維字元陣列char s[4][6]=,執行程式cout<<*s[2],螢幕上顯示 (

a gao b tang c g d t 答案b

問題:*s[2]是什麼呢? 怎麼求出來是s[0][2]的值呢??

s[0]指向"zhang"

s[1]指向"gao"

s[2]指向"tang"

s[3]指向"wang"

s[2]就是指s[2]的第乙個數值 t,所以答案應該是d

首先要先搞明白指標是什麼。

然後要搞明白陣列名是什麼。

再搞清楚陣列與指標的關係。

然後再去研究多維陣列的概念。

再去研究多維陣列與指標的關係。

最後再研究陣列指標的概念。

6樓:網友

第乙個不完整吧。

2,你可以看一下二維陣列的初始化,s[i](i=0,1,2,3)都是char*型別的指標。

c語言二維陣列和指標的問題

7樓:網友

兩位的問答快給我看暈了。。不看書好多年了,不知道自己說的還對不對,供參考。

如上所述,a+1肯定是不等於*(a+1)的,原因如下:

型別都不一致怎麼比(印象中老版本編譯器可以)(a+1)+1是絕不可能等於*(a+1)+1的。

要說等於的話是這樣等於(int)(a+1)==(int)*(a+1)或者這樣(int*)(a+1)==(int*)*a+1)這樣(int**)a+1)==(int**)a+1)

總而言之是它們的位址相等,也就是說a+1和*(a+1)表示的是同乙個位址,都是a[1][0]的位址,相等的必要條件是a[1]的型別必須是指標,同理:a[1]和&a[1]表示的也是同乙個位址(這根本就是定理本身。

關於2維陣列指標的乙個小問題~~

8樓:網友

int a[3][4]

類似於乙個int **指向指標的指標。

a+2 是乙個int**指標 他指向型別是int* 他是指向a[2] 它的首位址是a[2][0] 如你在(a+2)+1 這個彎碼將移動4*sizeof(int) 就是指向a[3]這個數則譽組(其中包括有a[3][0]--a[3][4])

a+2)也是乙個指標,是int *指標 他指向的型別是埋盯哪int 就是指向a[2][0] 如果你*(a+2)+1 這個是隻指向乙個int 就是a[2][1] 如果你想取a[2][0] 應該是**(a+2) 取a[2][1]就是 *(a+2)+1)

c 中二維陣列的指標如何定義?

二維陣列的指標就是指標的指標,比如一個int型二維陣列 int array 2 3 指向它的指標就可以定義成 int p 如何使用這個指標呢,就和使用普通二維陣列一樣,比如第一行第二個元素 p 0 1 int a 2 2 a 就是 a 0 0 第一行第一列。a 1 就是 a 0 1 第一行第二列。a...

二級C語言關於指標與二維陣列謝謝

a p是一個指向char型別的指標,如果指向陣列,則陣列也應該是一維陣列才可,這裡s是二維陣列,不可 b k是一個陣列指標,它指向一個陣列,但是這個陣列要求有三個char型別的資料,跟p不匹配,不可 c s 0 表示s這個二維陣列的第一行,也就是,它屬於一維陣列,跟p匹配,可 d 將一個二維陣列賦值...

php中如何合併幾個二維陣列成為二維陣列

宇宙大師之一 php 中的 array merge recursive 函式可以實現 將一個或多個陣列的元素的合併起來,一個陣列中的值附加在前一個陣列的後面。並返回作為結果的陣列。當有重複的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞迴組成一個陣列。array merge recursive ar...