指针总结
地址
-
地址的表示:&x
x必须是一个确切的变量,不能是表达式
-
地址的转义字符:%p
-
地址的大小取决于系统,32位系统中地址和int类型一样大,64位系统中地址更大
-
关于数组a[N],&a = &a[0] = a
指针
- 指针的含义:专门用来保存地址的变量
p是i的指针,意思是,p这个变量的值为i的地址,也就是&i
-
定义方式:int *p = &i; 或 int* p = &i;(也就是说星号在左在右是等价的)
-
访问指针指向的值:*p, *p是一个整体,为整型
指针的应用:
- 需要返回多值(传入的参数需保存结果)
- 利用函数的返回值返回状态,指针返回结果
关于const
-
常量指针(int *const p)
表示该指针指向唯一变量
数组名所代表的指针相当于int *const a;
-
所指、只读指针(const int *p, int const *p)
不能通过指针来修改其所指向的值
-
数组
const int a[N] = {...}表示数组a的每个元素都为const int,不可修改
关于运算
指针++,加的是sizeof(其指向的类型)
指针的差也同理,两个相同类型的指针的差表示这两个地址之间有多少个这样的类型