iT邦幫忙

0

結構struct和物件class差異怎麼分?

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20210729/20131382Wkhm1QrnJr.png
https://ithelp.ithome.com.tw/upload/images/20210729/20131382C1zMoZDKre.png
https://ithelp.ithome.com.tw/upload/images/20210729/20131382wkmaJ5GKt1.png
https://ithelp.ithome.com.tw/upload/images/20210729/20131382oQ0exhYXPu.png
想請問為甚麼C結構不用malloc或new就可以直接y.num1 y.num2映出10 20。
但C#的物件導向如果我把 武器 劍、斧 後面的 new 武器() 拔掉就不讓我映出 劍、斧.攻擊力。
不知道struct和class明顯差異在哪,明明也是包一堆東西令成一個新的資料型態。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
EN
iT邦好手 1 級 ‧ 2021-07-29 13:33:05
最佳解答

因為你已經在 C Code 是定義 + 宣告了啊:

/* 定義型別 test_t */
typedef struct test{
    int num1 = 10;
    int num2 = 20;
} test_t;
/* 宣告 */
test_t y;

這樣你在執行前就已經完成初始化 + 賦值了。
當然,如果你要用 malloc() 也是可以的:

#include <stdlib.h>

test_t* ptr = (test_t*) malloc(sizeof(test_t));
ptr -> num1 = 10;
ptr -> num2 = 20;

至於 StructClass 的差別,我認為 Struct 方便我們自定義資料結構,Class 則可以讓我們實作 OOP (因為有現成的方法能用)。
最後,雖然 C 語言沒有 Class,但也是可以用 OOP 的觀念去撰寫程式碼的。

看更多先前的回應...收起先前的回應...
EN iT邦好手 1 級 ‧ 2021-07-29 13:55:11 檢舉

C 語言的物件導向設計可以講很久,如果你有興趣的話可以自己 Google XD

froce iT邦大師 1 級 ‧ 2021-07-29 13:56:38 檢舉

https://blog.heron.me/c-and-oop-b3bc39b022d1

不過我是看不懂啦,程式語言真的有些是心法,有些是招式。

EN iT邦好手 1 級 ‧ 2021-07-29 14:05:09 檢舉

推薦 froce 大一本書,我覺得二十一世紀 C 語言還不錯,講的很清楚 XD

froce iT邦大師 1 級 ‧ 2021-07-29 14:11:21 檢舉

我家書早就山積了。XD
不過剛剛有看到有介紹 makefile。覺得這本應該會蠻實用的。謝啦
以前買的書都只看到教你怎麼寫,不教你工具生態系的。
我是真的覺得買語言書應該要找順便教生態系的。

不過我沒在寫C就是了,golang爽爽用就好。

EN iT邦好手 1 級 ‧ 2021-07-29 14:13:42 檢舉

froce
我今年的鐵人賽也會寫工具生態系這一塊,歡迎追蹤 XDDDDD

後來爬很多文,C#好像是說他們兩個概念上一樣只是記憶體的存放方式和一些定義語法不一樣。

EN iT邦好手 1 級 ‧ 2021-09-23 19:04:22 檢舉

hsuan1985419
問題有順利解決就好 XD

我要發表回答

立即登入回答