作者 a1e (我上了賊船了囧)
標題 Re: [問卦] C++到底難學在哪裡
時間 Sun Mar  5 15:42:23 2023


※ 引述《tatty5566 ( )》之銘言:
: 看到標題我就想問,C++是不是沒那麼適合新手學啊?
: 我資工大一上程設就C++,那時候用的是螞蟻書
: 之後不知道是我沒天分,還是教授講太爛,
: 學期中講到pointer我就聽不懂,直接斷然轉學
指標不熟,單純就是練的不夠多,練多了就會知道這東西是什麼
你只看書上描述當然看不懂,直接跳下去寫就知道了
例如
int main()
{
    int temp[5];
     for(int i=0;i<5;i++){
        temp[i]=i+1;
        printf("temp[%d]=%d\r\n",i,temp[i]);
     }
    return 0;
}
這簡單的陣列填值,看不懂的就不要學寫程式了,快點轉行

把指標加上去
int main()
{
    int temp[5];
    int *p;
    p = &temp[0];
    for(int i=0;i<5;i++){
        *(p+i)=i+1;
        printf("temp[%d]=%d\r\n",i,temp[i]);
        printf("p+%d=%d\r\n",i,*(p+i));
    }

    return 0;
}
會發現為什麼我只是往指標寫值進去,陣列沒動作,陣列數字跟著一起動
因為指標就是直接把開頭位址,指到你指定的記憶體位址
上面那個例子指到陣列第0個位址去了,後面+1就是每次移動4個byte
(指標宣告為int,int是4個byte,每次+1就是移動4個byte位址)
當然就會跟著把陣列塞滿

程式運作就像下面這樣
temp
0   1   2   3   4
^   ^   ^
|   |   |
p  p+1 p+2

你指標跑完,陣列也填完數字了
指標後面還有一堆操作,基本邏輯就是記憶體位址操作
例如你要寫一個程式,你每次寫進去的資料量不一樣,這次寫10筆,下次15筆..etc
你如果宣告一個長度100的陣列,有次資料要寫101筆,你就爆了
最簡單的解決方法就是直接建一個超大的陣列,例如長度100000
你怎麼寫都不可能超過這個大小就沒事


但如果你的硬體記憶體不夠,你只能用指標,讓他可以浮動的一直寫下去(除非記憶體
被用完)

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.223.176 (臺灣)
※ 作者: a1e 2023-03-05 15:42:23
※ 文章代碼(AID): #1a14VYWJ (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1678002146.A.813.html
※ 同主題文章:
Re: [問卦] C++到底難學在哪裡
03-05 15:42 a1e
ivanos: 還不是等著被AI取代 Zzz1F 111.83.168.166 台灣 03/05 15:44
antonny: 我叫chatgpt寫2F 180.217.23.231 台灣 03/05 15:47
chatgpt現在只能寫一些簡單的程式啦,叫他寫複雜一點的就寫不出來了
https://www.ptt.cc/bbs/C_Chat/M.1677237907.A.28D.html
Re: [閒聊] ChatGPT是語言模型不是搜尋引擎 - 看板 C_Chat - 批踢踢實業坊
[圖]
[圖]
[圖]
a1e (我上了賊船了囧) 你這想法我早就try過了 之前跟他玩的時候 先用python測試 磁碟寫入速度測試  
dosiris: 記憶體不貴 加記憶體不就解決3F 61.230.50.214 台灣 03/05 15:48
看你硬體啦,我這邊一堆記憶體不到100mb的硬體,你記憶體不能隨便用
當然pc就沒差了,現pc硬體動不動就10gb以上的記憶體當然隨你用
※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 15:50:45
abcd5566: 可憐哪4F 27.247.228.122 台灣 03/05 15:48
gino0717: QQ5F 123.194.162.12 台灣 03/05 15:51
mithuang: 可惜這是指標最基礎的用法,大家說很難懂的應該不會是卡在這裡吧~6F 218.164.119.236 台灣 03/05 15:51
我也不知他到底卡在那裡,先講這點,不然還要打麼好多,好麻煩
※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 15:52:07
kabukiryu: 泄瀉泥8F 180.177.70.128 台灣 03/05 15:53
kenny2963: 但這樣不就釋放前不能使用後面的記憶空間否則有可能覆蓋? 畢竟沒限制範圍9F 114.45.164.32 台灣 03/05 16:03
kingstongyu: 好可憐喔~~大概只懂C/C++,換JAVA或ASM就不知道了~~11F 61.224.200.209 台灣 03/05 16:05
組語是不會啦,不過說別人java不會的,是以為java有多難www
好可憐java就難到有人以為只有自己會的 wwwww
CIDgreen: AI = 幫你Google  不會的人本來就該淘汰建議可以是看看把「寫程式」換成「做菜你吃看看就知道 AI 做什麼菜13F 123.192.67.106 台灣 03/05 16:07
※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 16:13:37
kingstongyu: 來~~寫個VM或EMULATOR看看,把X86架構上跑的程式換到MIPS架構上跑跑看16F 61.224.200.209 台灣 03/05 16:16
jen1121: Javaer路過,目前看來py最有錢途,爭什18F 180.217.13.237 台灣 03/05 16:19
kingstongyu: https://reurl.cc/pLMeQl 寫個作業系統來看看19F 61.224.200.209 台灣 03/05 17:01
TRON - 維基百科,自由的百科全書
TRON (英語:The Real-time Operating system Nucleus)是一個開放的實時作業系統內核。其項目於1984年由東京大學的坂村健教授發起,宗旨是「為全社會的需要創造一套理想的計算機結構和網絡」。&#91;1&#93;

--
作者 a1e 的最新發文:
點此顯示更多發文記錄