Re: [問卦] C++到底難學在哪裡
※ 引述《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 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1678002146.A.813.html
噓
03/05 15:44,
2年前
, 1F
03/05 15:44, 1F
推
03/05 15:47,
2年前
, 2F
03/05 15:47, 2F
→
03/05 15:48,
2年前
, 3F
03/05 15:48, 3F
看你硬體啦,我這邊一堆記憶體不到100mb的硬體,你記憶體不能隨便用
當然pc就沒差了,現pc硬體動不動就10gb以上的記憶體當然隨你用
※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 15:50:45
噓
03/05 15:48,
2年前
, 4F
03/05 15:48, 4F
推
03/05 15:51,
2年前
, 5F
03/05 15:51, 5F
推
03/05 15:51,
2年前
, 6F
03/05 15:51, 6F
→
03/05 15:51,
2年前
, 7F
03/05 15:51, 7F
我也不知他到底卡在那裡,先講這點,不然還要打麼好多,好麻煩
※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 15:52:07
推
03/05 15:53,
2年前
, 8F
03/05 15:53, 8F
推
03/05 16:03,
2年前
, 9F
03/05 16:03, 9F
→
03/05 16:04,
2年前
, 10F
03/05 16:04, 10F
推
03/05 16:05,
2年前
, 11F
03/05 16:05, 11F
→
03/05 16:05,
2年前
, 12F
03/05 16:05, 12F
組語是不會啦,不過說別人java不會的,是以為java有多難www
好可憐java就難到有人以為只有自己會的 wwwww
→
03/05 16:07,
2年前
, 13F
03/05 16:07, 13F
→
03/05 16:07,
2年前
, 14F
03/05 16:07, 14F
→
03/05 16:08,
2年前
, 15F
03/05 16:08, 15F
※ 編輯: a1e (118.166.223.176 臺灣), 03/05/2023 16:13:37
→
03/05 16:16,
2年前
, 16F
03/05 16:16, 16F
→
03/05 16:17,
2年前
, 17F
03/05 16:17, 17F
推
03/05 16:19,
2年前
, 18F
03/05 16:19, 18F
推
03/05 17:01,
2年前
, 19F
03/05 17:01, 19F
→
03/05 17:01,
2年前
, 20F
03/05 17:01, 20F
推
03/05 18:12,
2年前
, 21F
03/05 18:12, 21F
→
03/05 18:12,
2年前
, 22F
03/05 18:12, 22F
→
03/05 18:12,
2年前
, 23F
03/05 18:12, 23F
推
03/05 18:27,
2年前
, 24F
03/05 18:27, 24F
→
03/05 19:07,
2年前
, 25F
03/05 19:07, 25F
→
03/05 19:09,
2年前
, 26F
03/05 19:09, 26F
推
03/05 23:22,
2年前
, 27F
03/05 23:22, 27F
→
03/05 23:22,
2年前
, 28F
03/05 23:22, 28F
推
03/07 11:04,
2年前
, 29F
03/07 11:04, 29F
討論串 (同標題文章)