Re: [问卦]恸!资工系不懂指标484不用玩了

楼主: bachelorwhc (单身老王)   2018-03-11 10:53:33
※ 引述《c10016338 (cwtyeahyeah)》之铭言:
: 如题
: 本鲁学店资工系啦,上学期学基础c++爽爽过,虽然也有学到一些指标,但因为是解题导
: 向,所以没很在意,想不到这学期的物件导向,才上到用指标写出二维阵列,就听到脑袋
: 空空,这样484该转系啦?
指标是很多初学者的恶梦
但我觉得指标学不会 不是因为脑袋不好 是因为对程式没有基本的概念
我建议所有大学教授 先从组合语言教起
首先 指标只是个虚幻的名词 他跟整数型别没啥两样
char c = 'A';
size_t ptr = (size_t)(&c);
char c_dereference = *((char*)ptr);
为什么呢?因为编译器只在乎解读一个内存位置其数值的方法
这也就是为什么C++允许用户在宣告时,
使用其他使用者自订型别可以只用forward declaration搭配reference跟pointer
因为编译器只要知道 这个变量的大小就好了
相反的 如果你要编译器编译一个大小都不知道的型别 是不可能的
回到指标 不管是指标 int 还是 char 都只是数据的型别
C/C++的程式设计师被赋予可以用任何型别解读任何数据的权力
但后果要自行负责
Pointer学不好 还有一个原因
就是对用词不够了解
int* ptr = &an_integer;
"int*" 是一个型别 就是 整数型别的指标型别 很饶口
"&" 在这边 叫做address-of(取址) operator 顾名思义 就是取址
int copy = *ptr;
这时候 "*" 这个符号 叫做 dereference operator 中文有人翻反参照
Pointer的核心玩法 其实是function pointer 也是C++多型的实作原理
不过我建议 在台湾与其练C++ 不如把C练好 要不然就是转战其他潮语言
作者: showbbs (小林村加油)   2018-03-11 10:58:00
*((char*)ptr)<--等于ptr吗
作者: t81511270 (justlikeING)   2018-03-11 11:01:00
就好像 唱很饶口 的rap一样= =
作者: LuSirOtaKu (鏀鏀der)   2018-03-11 11:04:00
pointer其实搞懂后真得挺强大又有趣的 就真得对初学者不友善

Links booklink

Contact Us: admin [ a t ] ucptt.com