全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:943
推到 Plurk!
推到 Facebook!

一個結構使用問題

答題得分者是:暗黑破壞神
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-03 15:30:59 IP:203.70.xxx.xxx 未訂閱
 
#include 
#include     struct xx1{
       
    int score; 
    char name[20]="hello";這樣為什麼不可以 
  
};    int main()
{
    xx1 test;  
    struct xx1 *ptr=&test;
      
    ptr->score=100;//這邊這樣設可以??為什麼下面的就不可以??
    ptr->name="hello"; //或是我改在這設定為什麼不可以?
    
    
    
    printf("%d",ptr->score);
    printf("%s",ptr->name);        
    
    
    
    
    system("pause");
    return 0;    
    
}    
是不是只能靠 scantf("%s",ptr->name); 或是 struct xx1 test={100,"hello"};//初始化 發表人 - syao 於 2005/07/03 15:34:22
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-03 17:49:21 IP:59.104.xxx.xxx 未訂閱
引言: char name[20]="hello";這樣為什麼不可以
你不能在宣告結構時給值。 就好像上帝在造人時。 不能在被始時就把人都設成男的或是女的一樣。它必須是空白的。
引言: ptr->score=100;//這邊這樣設可以??為什麼下面的就不可以?? ptr->name="hello"; //或是我改在這設定為什麼不可以?
你當然可以把 score 設值。 但字串的設值應使用 strcpy, memcpy,..etc 的方式使用。 而非使用 "=" 再去把書讀一讀吧。很基礎的觀念問題。
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-03 21:16:28 IP:203.70.xxx.xxx 未訂閱
不過為什麼一般情況下 char name[20]="hello";//這樣也算是字串設值吧,是因為這樣初始化是ok? 在結構指標使用 ptr->name="hello"; //是因為這不是初始化原因嗎?? 這樣解釋合理嗎?
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-03 23:01:29 IP:211.74.xxx.xxx 未訂閱
引言: char name[20]="hello";//這樣也算是字串設值吧,是因為這樣初始化是ok?
因為 name 不會拿去再複製成其它的。 而 struct A..... 會被這樣使用 A a; A b; ..... 那你在 A 中的 "hello" 要不要給 a & b 呢? 所以。在 A 中不得有初始值。
引言: 在結構指標使用 ptr->name="hello"; //是因為這不是初始化原因嗎??
這種寫法是想死比較快啦。^_^ 因為你的 name 是以 array 來宣告的。 不是以 pointer 來宣告的。 兩種使用法不太相同。 還是那一句話 再去把書讀一讀吧。很基礎的觀念問題。
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-03 23:22:46 IP:203.70.xxx.xxx 未訂閱
了解~~ 非常感謝
系統時間:2024-11-25 11:45:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!