reus
2016-10-04 15:46:02 +08:00
这种基础的东西,就不用自己“推测”、“试验”什么的了,拿本好的教材,好好看看,好好理解,全盘接受就行。
指针就是指针,这是个有明确定义的概念,也是个被广泛接受的表达这个概念的词汇。
identifier 、 variable 也是有明确定义的概念,“指针应该叫做标识符变量”根本就是概念理解不透彻,才会得出的结论。
“一个推论:在高级语言中,计算机内部的东西均以标识符做映射,表示,操作,指定(不允许在代码中直接指定地址操纵,比如*(0x00000001) = 3,原因是没有该地址的配置信息,而地址的配置信息储存在标识符当中)”
就这一段话,就诸多错误:
“计算机内部的东西”,这叫“内存”。
“以标识符做映射”,错,表示内存存储位置的叫“变量”。标识符( identifier )是词法 /语法分析阶段的概念,一个标识符可能表示变量,可能表示类型,例如 int a; 这句, int 这个标识符表示整数类型, a 这个标识符表示一个变量。标识符还可能表示常量、模块等等,取决于不同语言的设计。但与内存映射的,都叫“变量”。
“配置信息”,术语叫“类型信息”,这是关联到变量的,由编译器在类型分析 /推导阶段得出,它并不是“储存在标识符当中”,而是每个变量都有关联的类型信息。
在 C 里, *((int*)(999)) = 33; 是可以通过编译的,执行时才会出错。所以直接读写某个地址是可以的,只要给出类型信息。这里是不需要定义变量的。所以整个“推论”是错的。
“观察”、“推测”、“交叉验证”,不是学习 C/C++应有的方法,稍微靠谱的教材都会讲到 const 怎么修饰的,根本用不着你猜测。
总之,是学艺未精而想得太多。