[問題] 關於sizeof的問題???

看板C_and_CPP作者 (千里之外)時間15年前 (2010/06/02 11:15), 編輯推噓4(408)
留言12則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 在程式碼中 double data[4]; printf("陣列元素的個數:%d\n",sizeof(data)/sizeof(double)); 請問為什麼是除以sizeof(double)而不是sizeof(data[0]) 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.97.109

06/02 11:19, , 1F
data[0]或double佔的都是double的size, 結果應該是一樣
06/02 11:19, 1F

06/02 11:19, , 2F
的, 至於直接除以base type還是除以first element好, 小
06/02 11:19, 2F

06/02 11:20, , 3F
弟我也不知道XD
06/02 11:20, 3F

06/02 11:20, , 4F
兩種都可以,你高興就好。
06/02 11:20, 4F

06/02 11:23, , 5F
除以那一種都是一樣的,單獨一個的大小跟double相同
06/02 11:23, 5F

06/02 11:29, , 6F
除以第一個元素的好處是之後型別想改掉只改需一個地方
06/02 11:29, 6F

06/02 11:32, , 7F
除以第一個元素比較好 我想不到支持另一種的理由
06/02 11:32, 7F

06/02 11:44, , 8F
不是單純算element count, 比如要硬做型別轉換時, 或許
06/02 11:44, 8F

06/02 11:44, , 9F
就可以用直接除以型態; Ex: 把這個double array的記憶體
06/02 11:44, 9F

06/02 11:45, , 10F
直接印象所有對應的Hex, 這時可以char *ptr=data, loop
06/02 11:45, 10F

06/02 11:46, , 11F
sizeof(data)/sizeof(char)印吧?? 不過這也偏離了原來算
06/02 11:46, 11F

06/02 11:46, , 12F
array element count的用途就是了XD
06/02 11:46, 12F
文章代碼(AID): #1C1SpdYJ (C_and_CPP)