小便签:
~ 按位取反操作符
数据以补码的形式在内存中存储,打印时是原码。
指针(pointer)
指针就是一个变量,用于存放地址。
形式:*p
在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小应该是4个字节;在64位的机器上,地址是64个0或者1组成二进制序列,那地址就得用8个字节的空间来存储,所以一个指针变量的大小应该是8个字节;
一个字节=8个比特位
指针的解引用操作
指针类型决定了指针进行解引用操作的时候,能够访问空间的大小。
int *p; *p能够访问4个字节
char *p; *p能够访问1个字节
double *p; *p能够访问8个字节
指针+-整数
指针类型决定了指针走一步走多远(指针的步长)
int *p; p+1 表示向后偏移了4个字节
char *p; p+1 表示向后偏移了1个字节
double *p; p+1 表示向后偏移了8个字节
野指针
指针指向的位置不可知。
成因:
1、指针未初始化
形式: int *p,局部的指针变量未被初始化,是随机值。
2、指针越界访问
越出指向数组的方位
3、指针指向的内存空间已被释放