谭浩强
1. 在程序中一般是通过变量名来对内存单元进行存取操作的。
其实程序经过编译之后已经将变量名转换为变量的地址,对变量的存取都是通过地址进行的。
2. C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式,指针变量作函数参数也要遵循这一规则,
不可能通过调用函数来改变实参指针变量的值,但可以改变实参变量指针所指变量的值。
3. 引用数组元素可以用下标法,也可以用指针法。
使用指针法能使目标程序质量高(占内存少,运行速度快)
4. 事实上, 在编译的时候, 对数组元素a[i]就是按*(a+i)处理的, 即按数组首元素的地址加上相对位移量得到要找的元素的地址, 然后找出该单元的内容.
可看出, [ ]实际上是一种变址运算符, 将a[i]按照a+i算地址
故指向数组的指针变量也可以带下标, a[i]和*(a+i)等价
由3,4看出,引用一个数组元素, 可以:
下标法: a[i]
指针法: *(a+i) 或 *(p+i)s
只需记住一点:指针指向的数据类型与定义时指针的类型一定要是对应的。除了用强制类型转换。
评论