Re: [问卦] C++到底难学在哪里

楼主: a1e (我上了贼船了囧)   2023-03-05 15:42:23
※ 引述《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
你怎么写都不可能超过这个大小就没事
但如果你的硬件内存不够,你只能用指标,让他可以浮动的一直写下去(除非内存
被用完)

Links booklink

Contact Us: admin [ a t ] ucptt.com