c 的指標問題

2023-02-18 16:55:10 字數 951 閱讀 3617

1樓:蕭然

首先想說一下關於指標的問題:這裡jnx時二維陣列的首地址,就像在記憶體中開啟了這麼一個區域用來存放資料。同樣的要訪問他們可以通過下標同時使用指標也是對的,但是一定要對準位置了。

老師的做法是對的,在定義以後同樣的要分別的給各個指向一維陣列的指標賦值(for(i=0;i<=3;i++)p2[i]=jnx[i])

只有通過這樣的賦值後p2才可以正確的找到它指向的位置!

為什麼定義int *p2[4], 而不是int *p2=jnx;因為第二者僅僅時提供了一個首地址,因為p2沒有指明一維陣列的長度,因此p2[1]等是沒有正確的地址的!這點應該明白!定義int *p2[6]就更加的不對了,因為jnx[4][6]一共就有4個一維陣列為什麼要浪費空間,多開兩個一維陣列來容納資料呢!

對吧!指標很重要!好好想想!不到之處,請見諒!

2樓:劍起飛虹

p2是一維陣列,怎麼會有兩個下標?

p2的長度當然要與jnx的第一維相等了。

3樓:漫步伯爵

int *p2[4]就是用一維陣列表示二維陣列的意思, 意即每一個p[x]裡,都包含了另外一個陣列,也就是另外一個陣列的指標, 是一個地址, 訪問它,它就可以引領著你去找p[x][*

4樓:匿名使用者

你老師說的那個是一個指標陣列,裡面包含4個指標,分別是p2[0]、p2[1]、p2[2]、p2[3],然後再用賦值語句p2[0]=jnx[0]、p2[1]=jnx[1]、p2[2]=jnx[2]、p2[3]=jnx[3],使得p2[0]、p2[1]、p2[2]、p2[3],分別指向jnx二維陣列的每0、1、2、3行,p[i][j]就表示第i行的第j個元素,這樣以來p2[i][j]與jnx[i][j]就是等效的了。

還可以用別一種方法,int(*p2)[6],然後用p2=jnx,這樣p2[i][j]與jnx[i][j]也是等效的。試試吧~~~

C語言指標問題,C語言指標問題

include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...

C語言的問題,指標陣列,c語言指標陣列

改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...

C語言的指標問題

指標說白了就是和變數一樣的東西。指標就是儲存了記憶體地址。比如你輸出個指標。int i new int std cout 得到的是一行16進位制的正整數。而這個正整數i的內容。而這個內容對應的是一個記憶體地址。因為你在moveblock中的操作是要對主函式中的x,y的值的改變,此時就只能傳地址了,這...