[課業] 程式語言兩題

看板Examination作者 (馬贏狗)時間10年前 (2013/07/27 22:43), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串1/2 (看更多)
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是怎麼形成的不太清楚 還請會的大大賜教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.166.245

07/27 23:19, , 1F
第一題我不明白...第二題因為你用union
07/27 23:19, 1F

07/27 23:20, , 2F
可以先去了解一下union你就知道為什麼了
07/27 23:20, 2F

07/27 23:20, , 3F
union共用記憶體空間 後面指定的會刪除前面指定的
07/27 23:20, 3F
我知道共用記憶體空間

07/27 23:28, , 4F
第一題沒說陣列是否從0開始也可以算???
07/27 23:28, 4F
起始位址M[0][0] ※ 編輯: Mayinggo 來自: 111.242.11.49 (07/28 08:55)

07/28 09:21, , 5F
你算出元素頭,+3byte才是元素尾端
07/28 09:21, 5F
找到了 陣列結束指標是陣列中要排序的最後一個位置的下一個位置,也就是說會被排序的是一個 半開區間 還請大大解釋union的概念 ※ 編輯: Mayinggo 來自: 111.242.11.49 (07/28 09:42)

07/28 11:03, , 6F
所謂的UNION指的是COURSE和SCORE
07/28 11:03, 6F

07/28 11:04, , 7F
指向相同的記憶體空間,只是型態不同
07/28 11:04, 7F
文章代碼(AID): #1Hyzo9NI (Examination)
文章代碼(AID): #1Hyzo9NI (Examination)