看板 C_and_CPP 關於我們 聯絡資訊
#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
james732:就算你把 malloc 那段拿掉,還是可以印得出來...XD 05/25 15:13
dk3208:你沒有先配置X的第二個維度居然還可以跑... 05/25 15:19
kavylin:for(int k=0;k<=9;k++)//因為你是印address,你想的是k<=4 05/25 15:19
dk3208:還有那些位址本來就都存在,當然可以印出來,只是不能用而已 05/25 15:20
pico2k:to dk3202:可以跑,只是stack的內容會亂掉... 05/25 15:26
dk3208:我在VC2008跑到x[i]那邊就告訴我存取到無效的記憶體位址 05/25 15:30
dk3208:在前面加上int **x = new int* [10]; 就可以了 05/25 15:31
lO:一樓說的是真的嗎= = 05/25 15:35
james732:要知道&x[i][k]的意思 有沒有&有什麼差別 05/25 15:48
loveme00835:&x[i][k] == x[i] + k 05/25 15:51