指针:内存单元的地址
auto int * p
int a; int * p; p = &a;
a与p相当于是两个变量, a的值为128,地址为0x..(A)..,
p的值储存为a的地址, p的地址为0x.(B)...
*相当于取值, &相当于取址
同类型指针加减, 指针相加是加n个类型的字节(float就+8n个,int就+4n个)
指针相减得出的是相隔数据的个数
!!!q=p++,先赋值在运算!!!
即q=p, p=p+1
Ø
px
— 指针变量, 它的内容是地址量
Ø
*px
— 指针所指向的对象, 它的内容是数据
Ø
&px
— 指针变量占用的存储区域的地址,是个常量
x[i] 、*(px+i)、*(x+i) 和px[i]具有完全相同的功能:访问数组第i+1个数组元素
数组名不能a++,a--, 但是可以a+1
*(a+1) *的作用:改变指针的性质
a a[1] a[2]是行指针,二级指针, 加* *a *(a+1) *(a+2)则降级为一级指针, 一个一个走
*取值\改变性质
字符串不能修改!!!!!!(*p=a不对)
→注意!!!strcat(ch, p)√ strcat(p, ch) ×
注意int定义起始值
void
void 使用需要强转, 未转换前不能运算
赋值可以正常赋值,但使用时需要强转!!
const
有两种位置, 含义也不同
const int * p; const修饰* p int const * p; const修饰p