[問題] double pointer

看板C_and_CPP作者 (今天早上)時間15年前 (2010/05/25 07:06), 編輯推噓2(208)
留言10則, 6人參與, 最新討論串1/2 (看更多)
#include<stdlib.h> #include<stdio.h> int main() { int **x; for (int i=0;i<=9;i++) x[i]=(int*)malloc(5*sizeof(int)); for (int i=0;i<=9;i++) { for (int k=0;k<=9;k++) printf("%u ",&x[i][k]); printf("\n"); } system("pause"); } 我原先的用意是 想開一個二維陣列 可是明明只開了5個sizeof(int) 卻可以印出10個位址(每一個位址都差4 代表為sizeof(int)) 不知道這樣的結果是什麼原因造成的@@ 麻煩了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.139.18

05/25 15:13, , 1F
就算你把 malloc 那段拿掉,還是可以印得出來...XD
05/25 15:13, 1F

05/25 15:19, , 2F
你沒有先配置X的第二個維度居然還可以跑...
05/25 15:19, 2F

05/25 15:19, , 3F
for(int k=0;k<=9;k++)//因為你是印address,你想的是k<=4
05/25 15:19, 3F

05/25 15:20, , 4F
還有那些位址本來就都存在,當然可以印出來,只是不能用而已
05/25 15:20, 4F

05/25 15:26, , 5F
to dk3202:可以跑,只是stack的內容會亂掉...
05/25 15:26, 5F

05/25 15:30, , 6F
我在VC2008跑到x[i]那邊就告訴我存取到無效的記憶體位址
05/25 15:30, 6F

05/25 15:31, , 7F
在前面加上int **x = new int* [10]; 就可以了
05/25 15:31, 7F

05/25 15:35, , 8F
一樓說的是真的嗎= =
05/25 15:35, 8F

05/25 15:48, , 9F
要知道&x[i][k]的意思 有沒有&有什麼差別
05/25 15:48, 9F

05/25 15:51, , 10F
&x[i][k] == x[i] + k
05/25 15:51, 10F
文章代碼(AID): #1B-tS5jq (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B-tS5jq (C_and_CPP)