程式語言兩題 - 考試

Table of Contents

1.已知陣列M[15][12],每個元素4bytes。M[5][5]位址=13244868,行為主儲存模式,

則M結束位置為...

我是算13244868+((11-5)*15+(14-5))*4=13245264

可是書本上說還要加3 所以不清楚加3的原因為何

2.#include <stdio.h>
#include <stdlib.h>
#include <string.h>
union grade{
char course[5];
int score;
}Bob;
void printBob(void){
printf("Bob科目=%s\n",Bob.course);
printf("Bob成績=%d\n",Bob.score);
}
int main(void){
Bob.score=98;
strcpy(Bob.course,"數學");
printBob();
strcpy(Bob.course,"數學");
Bob.score=98;
printBob();
system("PAUSE"); return 0;
}

output是Bob科目=數學

Bob成績=-943798596

Bob科目=b

Bob成績=98

那個-943798596和b是怎麼形成的不太清楚

還請會的大大賜教

--

All Comments

Regina avatarRegina2013-07-31
第一題我不明白...第二題因為你用union
Thomas avatarThomas2013-08-03
可以先去了解一下union你就知道為什麼了
Ursula avatarUrsula2013-08-08
union共用記憶體空間 後面指定的會刪除前面指定的
Lily avatarLily2013-08-12
第一題沒說陣列是否從0開始也可以算???
Dorothy avatarDorothy2013-08-12
你算出元素頭,+3byte才是元素尾端
Carolina Franco avatarCarolina Franco2013-08-17
所謂的UNION指的是COURSE和SCORE
Rebecca avatarRebecca2013-08-22
指向相同的記憶體空間,只是型態不同