指针
指针就是一个地址。
定义指针
int a = 10;
int * p;
p = &a;
取址符号 &
使用指针
通过解引用的方式来找到指针指向的内存。
*p
内存
指针也是一种数据类型,他储存了地址,例如 0x0000
32位操作系统,指针占4个字节;64位系统,指针占8个字节。
32和64表示CPU可以处理最大位数,一次性的运算量不一样,理论上64位的会比32位快1倍,内存寻址也不一样。
空指针与野指针
- 空指针用于给指针变量进行初始化
int * p = NULL;
- 野外指针指向了非法的内存空间
int * p = (int *)0x1100;
const 修饰指针
常量指针:
int a = 10;
int b = 20;
const int * p = &a
:指针指向的值不可以改,指针的指向可以修改(常量指针)
int * const p = &a
: 指针的指向不可修改,指向的值可以修改(指针常量)
指针的移动
指针的大小是4B,指针++会向后偏移4B;
指针和函数
函数参数可以接受实值,也可以接受地址。
地址传递
void swap(*a,*b)
{
int c = &a
}