※ 引述《GooLoo (平凡)》之铭言:
: 之前有查过一些c语言的书, 了解指标...
: 但是看完文字描述, 还是不太会用, 也不是很了解它的精神
: 平常都写一些简单控制时序的程式,没有用到指标
: 今天看别人写的CODE,又看到指标.....
: 还是想问这问题, 就是我把*拿掉跟没拿掉,对整体动作有什么影响?
: 如果没影响, 好处又是什么呢?
: 如:
: void test(unsigned char *data,unsigned long len)
: {
: .....
: }
: 不晓得程式给这样够吗?还是要给些什么?
: 我看程式大部份都写得跟我平常写法差不多,只有这边多*
虽然这篇比较适合发在C_C++板
但路过还是回一下
如果有大大觉得我说的不清楚甚或有误
也请不吝拔刀相助
指标这个词来自于原文的pointer
翻译上不能说不精确
意思就是“指到某个东西的标记”
所以你的问题就相当于是
“直接指明一个东西”和“给一个指到某个东西的标记”的差异究竟在哪?
这么说吧
假设你是一个装潢师傅
客户跟你约好整修他的新房子
“指明一个东西”的情况下你会做的事情是
(相当于传入一间房子给函数)
你对一间房子做装潢,但是这间房子和客户的房子没有关系。
而且你做完了就不管那间房子在哪里,因此没有意义。
“给一个指到某个东西的标记”的情况是客户会给你那间房子的地址
(相当于传入地址给函数)
让你可以去到那间地址指定的房子做装潢。
再一个例子
假如你是助教而且不小心登记错了成绩被同学A抗议
A要求你把登记错误的60改成90
“指明一个东西”的情况下你会做的事情是
(相当于传入60分给函数)
把某一个写着60的数字删掉然后把它改成90,但是这个不是A的成绩栏。
因为你改写完了也不在意这是什么,因此没有意义。
“给一个指到某个东西的标记”的情况是你找到A的成绩字段
(相当于传入A的字段给函数)
让你可以修改A的字段里的值。
这两种效果是截然不同的
不是程度上的差异 而是性质上的差异
如果型别对错不但语意上有根本的错误
语法上通常也不太可能被编译器接受
希望这篇有帮助到你