PTT推薦

Re: [問卦] C++到底難學在哪裡

看板Gossiping標題Re: [問卦] C++到底難學在哪裡作者
a1e
(我上了賊船了囧)
時間推噓10 推:12 噓:2 →:15

※ 引述《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 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.223.176 (臺灣)
PTT 網址

ivanos 03/05 15:44還不是等著被AI取代 Zzz

antonny 03/05 15:47我叫chatgpt寫

chatgpt現在只能寫一些簡單的程式啦,叫他寫複雜一點的就寫不出來了

https://www.ptt.cc/C_Chat/E.J0mefWMxFYN4

dosiris 03/05 15:48記憶體不貴 加記憶體不就解決

看你硬體啦,我這邊一堆記憶體不到100mb的硬體,你記憶體不能隨便用 當然pc就沒差了,現pc硬體動不動就10gb以上的記憶體當然隨你用

※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 15:50:45

abcd5566 03/05 15:48可憐哪

gino0717 03/05 15:51QQ

mithuang 03/05 15:51可惜這是指標最基礎的用法,大家說很難懂

mithuang 03/05 15:51的應該不會是卡在這裡吧~

我也不知他到底卡在那裡,先講這點,不然還要打麼好多,好麻煩

※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 15:52:07

kabukiryu 03/05 15:53泄瀉泥

kenny2963 03/05 16:03但這樣不就釋放前不能使用後面的記憶

kenny2963 03/05 16:04空間否則有可能覆蓋? 畢竟沒限制範圍

kingstongyu 03/05 16:05好可憐喔~~大概只懂C/C++,換JAVA或

kingstongyu 03/05 16:05ASM就不知道了~~

組語是不會啦,不過說別人java不會的,是以為java有多難www 好可憐java就難到有人以為只有自己會的 wwwww

CIDgreen 03/05 16:07AI = 幫你Google 不會的人本來就該淘汰

CIDgreen 03/05 16:07建議可以是看看把「寫程式」換成「做菜

CIDgreen 03/05 16:08你吃看看就知道 AI 做什麼菜

※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 16:13:37

kingstongyu 03/05 16:16來~~寫個VM或EMULATOR看看,把X86架構

kingstongyu 03/05 16:17上跑的程式換到MIPS架構上跑跑看

jen1121 03/05 16:19Javaer路過,目前看來py最有錢途,爭什

kingstongyu 03/05 17:01https://reurl.cc/pLMeQl 寫個作業系

kingstongyu 03/05 17:01統來看看

lf2net4589 03/05 18:12哪一個工具掙錢是看底子吧?只是C++/C

lf2net4589 03/05 18:12#門檻高,看不到什麼低階工作,要就是

lf2net4589 03/05 18:12獵頭跟LinkedIn

kindaichitom 03/05 18:27寫成p=temp;比較簡潔

sharewood 03/05 19:07別誤人子弟 叫人開100000個

sharewood 03/05 19:09sizeof(temp)/sizeof(int)

mdkn35 03/05 23:22我是覺得不需要這麼折磨自己的眼睛

mdkn35 03/05 23:22程式動得快 好維護擴展 交接順利即可

H835 03/07 11:04這篇中肯