• 5

C++問題

liming wrote:
這問題...已經不是...(恕刪)



姓名是char的英文狀態(Hello)
代號也有可能是char狀態阿(ex:a12345)
char k ,m 都是ascii碼
roosalsa wrote:
姓名是char的英文...(恕刪)


恩...剛剛講錯...union跟memory空間有關...你用char array...沒事~^^你用兩個char array沒事...如果你用兩個char就有事了~

你先知道何時要用struct...何時要用union的目的吧
union mydata
{
char name[15];
char number[7];;
}teacher;

上面這一段union mydata的definition也是書上給的嗎?

如果是的話 其實還是有辦法做出來喔

如果不是的話 那方法更多了 Union裡面塞pointer塞object塞struct隨便你啦
Little Jack wrote:
union myda...(恕刪)


我猜書上不會給這種範例...
尤其這種寫法..
do{
cout<<"請問您的性別 (1)男性 (2)女性: ";
cin>>k;
}while((k>50)||(k<49));
你的資料應該宣告成這樣

struct mydata
{
char name[15];
char number[7];;
int gender;
union
{
int 役畢;
int 打字速度;
}
}

當然程式需要配合小改一下, 希望你能因此體會union的意義

liming wrote:
我猜書上不會給這種範...(恕刪)


但是有可能會把mydata的定義寫出來之後 叫你去寫出來一個程式視做什麼什麼的

恩不過說實在的這倒是一個挺不錯的題目
下次拿去考剛學C的人 應該會幫助他們了解一些基本的概念

所謂"一直在姓名的地方出錯!!"是什麼意思呀?

現在手邊沒編譯器, 如果單純用肉眼編譯... -_- , 只覺得

union mydata
{
char name[15];
char number[7];;
}
teacher;



cin.getline(teacher.name,15);

這幾行有點刺眼, 如果 teacher.name 輸滿了15個字, 而沒有\0字元當結尾,
程式不會當掉嗎?


--------------------------------------
更新...

網路上查了一下關於getline的說明, 有的人說getline的size要設成陣列容量-1, 不然會出錯,
但也有人說, getline的size要包含結尾字元... 所以這一切證明了我只是來亂的. -_- , 當我沒說吧, 打擾了...
khraft wrote:
所謂"一直在姓名的地...(恕刪)


應該是buffer size 所以不用 -1
luke16888 wrote:
struct mydata
{
char name[15];
char number[7];;
int gender;
union
{
int 是否役畢;
int 打字速度;
}
}


+1
Unions are class types that can contain only one data element at a time (although the data element can be an array or a class type).
The members of a union represent the kinds of data the union can contain.
An object of union type requires enough storage to hold the largest member in its member-list.

From MSDN

應該這樣就很清楚了吧.
  • 5
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?