[問題] 指標 記憶體大小問題

看板C_and_CPP (C/C++)作者 (su35)時間16年前 (2009/06/07 13:16), 編輯推噓4(401)
留言5則, 4人參與, 最新討論串1/1
請問一下 為什麼 ch1&ch2的sizeof 跟 ch3 的sizeof 會是 4 跟 6 呢 不是應該ch1&ch2是25嗎 char *ch1,*ch2; char ch3[]={'a','b','c','d','e','f'}; ch1="good morning good morning"; ch2=(char*)malloc(sizeof(char)*strlen(ch1)+1); strcpy(ch2,ch1); printf("%d\n",sizeof(ch1)); //輸出結果這是 4 printf("%d\n",sizeof(ch2)); //輸出結果這是 4 printf("%d\n",sizeof(ch3)); //輸出結果這是 6 system("pause"); -- ~剝好了,小心燙喔~ ◢◤ 喔喔~ ˋ◢██◣ ◢██◣◢ 哇~ ◢◤ ◣◢██◥█ ρ ██ █◥◥◥ ◤◤ █ ˊ你好體貼喔~ ◢◤ █ ◥◥◥██ ● ● ◢◤唉呀! ● <ζ◥◣ ◥██ ▼"█◤ ◢◤好燙~ˋ ◥█"/▊█◣ ◣██ ◢◤ ◢██ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.172.79

06/07 13:33, , 1F
ch1,2 => sizoef(char*) ch3 => sizeof(char[])
06/07 13:33, 1F

06/07 13:55, , 2F
目前電腦所有的指標都是4 Bytes=32位元,這樣才能定位所有位址
06/07 13:55, 2F

06/07 14:06, , 3F
感謝 讓我對指標更了解
06/07 14:06, 3F

06/07 14:12, , 4F
那是因為你用 32bit CPU,不是所有電腦都這樣 = =
06/07 14:12, 4F

06/07 14:15, , 5F
本來是想講簡單一點,不過這樣說法的確不太負責,謝謝指正。
06/07 14:15, 5F
文章代碼(AID): #1AAqr1xp (C_and_CPP)
文章代碼(AID): #1AAqr1xp (C_and_CPP)