[問題] struct大小的問題
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
struct mydata
{
char name;
int math;
double height, weight;
} student;
int main(void) {
cout << sizeof(student);
return 0;
}
為什麼跑出來是24?
不是一個變數是4byte嗎? 應該是16byte才是阿?@@
還是跟compiler有關係?
我是用mac Xcode
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.181
推
02/24 18:16, , 1F
02/24 18:16, 1F
推
02/24 18:16, , 2F
02/24 18:16, 2F
我一直以為struct存的是記憶體位置 類似pointer那樣
所以不論你宣告的變數大小 都是存成4byte
那我懂了 還有4byte為一個單位 不可能出現類似19byte這樣
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:19)
推
02/24 18:18, , 3F
02/24 18:18, 3F
→
02/24 18:18, , 4F
02/24 18:18, 4F
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:22)
推
02/24 18:21, , 5F
02/24 18:21, 5F
我想再問
如果struct內宣告 string name;
那這樣是多大? 因為看書上面是說字串欄位只儲存字串實際存放的位置
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:25)
struct mydata
{
string name;
int age;
}student;
我宣告這樣 sizeof(student); 出來是16
書上也是這樣宣告
結果他印出是8
為什麼我的是16?@@
但是若只宣告
struct mydata
{
string name;
} student;
sizeof(student); 出來是8
代表int age 佔了8byte?有點怪!@@
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:28)
→
02/24 18:27, , 6F
02/24 18:27, 6F
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:29)
→
02/24 18:29, , 7F
02/24 18:29, 7F
→
02/24 18:30, , 8F
02/24 18:30, 8F
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:34)
→
02/24 18:39, , 9F
02/24 18:39, 9F
→
02/24 18:39, , 10F
02/24 18:39, 10F
→
02/24 18:40, , 11F
02/24 18:40, 11F
→
02/24 18:41, , 12F
02/24 18:41, 12F
→
02/24 18:41, , 13F
02/24 18:41, 13F
→
02/24 18:41, , 14F
02/24 18:41, 14F
推
02/24 18:42, , 15F
02/24 18:42, 15F
→
02/24 19:03, , 16F
02/24 19:03, 16F
推
02/24 19:17, , 17F
02/24 19:17, 17F
推
02/24 19:52, , 18F
02/24 19:52, 18F
→
02/26 05:42, , 19F
02/26 05:42, 19F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章