1樓:新葉君闖天涯
答案是32個位元組。22是錯的,請其他答者了解一下結構體內存對齊原則。
根據結構體內存對齊原則:
{結構體中元素是按照定義順序乙個乙個放到記憶體中去的,但並不是緊密排列的。從結構體儲存的首位址開始,每乙個元素放置到記憶體中時,它都會認為記憶體是以它自己的大小來劃分的,因此元素放置的位置一定會在自己寬度的整數倍上開始(以結構體變數首位址為0計算)}
我們可以進行如下計算
首先放入char型 這樣占去6個位元組
之後開始放入int型 如今32位64位int一般情況佔4位,但儲存時必須為其位數整數倍,即:必須從0,4,8,12...等開始儲存,因為前面char占去6位,那麼int從第八位元組開始存 占去4*4=16位元組
之後存入double 其為8位元組,應該儲存在
0,8,16,24....這些位置。因為之前8+16=24;所以剛好從這裡開始存,則結果為24+8=32位元組。
這個問題已經有些時間了,我也沒有指望能給我採納,我只希望後來的人(應該是大學生並且多半是從題庫刷到的吧)能了解到為什麼是32位。
2樓:匿名使用者
光是double就8位元組了,int就算是2位元組,s[4]也有8位元組啊,怎麼可能14。
考慮到資料對齊,答案是num[6]佔6位元組,然後空2位元組,s[4]佔8位元組,double8位元組,總共24位元組。
3樓:左自強
32我除錯了的 這是正確答案
這是要根據對齊基數來算的
char六個位元組,
而s是16,所以取8為對齊基數,
最後是4*8=32
4樓:匿名使用者
都不是,我剛做到這題,30個位元組
c語言 設有以下結構型別說明和變數定義,則變數b在記憶體所佔位元組數是 _____。
5樓:匿名使用者
short佔兩個位元組
char佔乙個位元組,陣列容量為3,所以總共佔3個位元組float佔四個位元組,陣列容量為2,所以總共佔8個位元組double佔8個位元組
總共加一起就是21個位元組
6樓:篤俠
short int -- 2
char -- 1*3=3
float -- 4*2=8
double -- 8
合計 21
c語言程式設計題:有5個學生,每個學生有3門課成績,從鍵盤上輸入以上資料(包括學號、姓名、數學語文英
7樓:御阪妹妹
#include
#include
#define name_max 10
#define number_max 10#define students_max 5#define clear_enter(array) for(int idx=0;array[idx]!='\0';idx++)\
62616964757a686964616fe4b893e5b19e31333332636436 if(array[idx]=='\n')\
array[idx]='\0';
typedef unsigned int uint32;
typedef struct stu
stu;
int main(void)
{stu students[students_max];
int idx=0;
printf("輸入5個學生的資訊\n");
for(idx=0;idx
簡單的寫了乙個,沒有除錯過。編譯通過,mingw3.4.7.
c語言程式設計題,C語言程式設計題
用夢竹 include define n 3 int main b n n i,j for i 0 i 3 i for j 0 j 3 j b i j a 2 i j for i 0 i 3 i return 0 時間有限,只做了第一個。注 如果題目上有例子,可以直接按例題寫 這個 如果想改可以改n...
C語言程式設計題,C語言程式設計題
include include include void insert2ordered list int num,int arr,int arr lenth ptr i 最後面的那個值肯定要覆蓋掉了,就是因為陣列的固定的長度 void statistic alphabets int kinds nu...
求解C語言程式設計題,C語言程式設計題求解
int main else goto again for i 0 i 100 i 僅供參考 冬一又二分之一 include include include int get3num int a,int b,int n int i int sum 0 for i 0 iif a i 3 0 b sum ...