1.指针
ptr=&bah;//指向bah的指针
val=*ptr;//把指向的地址上的值赋给val
以上两行的作用相当于
val=bah;
*后跟指针名或地址
int * ptr 整型指针
short * ptr 短整型指针
double * ptr 双精度型指针
int dates[ ]
dates + 2 = =& dates [ 2 ]
*( dates + 2 ) = = dates [ 2 ]
dates 是数组首元素的地址
dates + i 是元素 dates[ i ]的地址
而 * ( dates + i )则是该元素的值
( * p3) + + 改变了数组元素的值
* p3 + + 和 * + + p3均表示指向数组下一元素
2.对于const
编写的函数不修改数组,声明形参时最好使用const
把const数据或非const数据的地址初始化为指向const的指针,或为其赋值是合法的
例如:
int rates [ 5 ] = { 1,2,3,4,5};
const int locked [ 4 ] = {6,7,8,9};
const int * pc = rates;//有效
pc = locked; //有效
pc = &rates [ 3 ];//有效
只能把非const数据的地址赋给普通指针
例如:
int rates [ 5 ] = { 1,2,3,4,5};
const int locked [ 4 ] = {6,7,8,9};
int * pnc = rates;//有效
pnc = locked;//无效
pnc = &rates[ 3 ];//有效
3.
int( * pz )[ 2 ];
表示pz指向一个内容含2个int 类型的数组
int * pax [ 2 ];
pax是一个内含两个指针元素的数组,每个元素都指向int的指针
4.
int zippo [ 4 ][ 2 ]
zippo[ 0 ]占用一个int大小对象的地址
zippo是占用两个int大小对象的地址
zippo = & zippo[ 0 ]
zippo [ 0 ] = & zippo [ 0 ][ 0 ]
* zippo = *( & zippo [ 0 ])
* * zippo = * ( & zippo [ 0 ][ 0 ])
zippo与zippo[ 0 ]与* zippo 的%p相同
zippo [ 0 ] + 1和* zippo + 1的%p相同
了解运算符号级