初探指针:
1.内存
计算机中的最小单位是什么???
bit位
最小的存储单位才是 byte 字节
1字节=8位
运行的软件 游戏 程序 都是在内存中
一个正在运行的程序我们称之为进程.
2.变量
2.1 定义变量
类型名 变量名;
2.2 引用
使用变量名就是在使用变量名绑定的内存段.
3.地址与首地址
地址:在计算机中每一个字节都有一个与之相匹配的编号我们把它称之为地址.
首地址:变量的第一个地址就是首地址
4.指针:首地址就是指针.
在内存中我们的地址是连续的,所以意味着知道了变量的首地址,知道了变量的类型,就可以确定变量对应内存的段的值,所以我们把首地址称之为指针.
5.指针变量
如果我们再次的开辟内存,用来保存指针,我们就把这个开辟的内存绑定的变量称之为指针变量.
int* p;
指针类型 在普通类型后面加了一个* ,p就是一个指针类型的变量。
6.指针大小
int* p; //p就是一个指针类型的变量
char* p1;
float* p2;
double* p3;
printf("int*=%d
", sizeof(int*));
printf("char*=%d
", sizeof(char*));
printf("float*=%d
", sizeof(float*));
printf("double*=%d
", sizeof(double*));
与编译器环境有关:4字节 x86 32位
改为x64 就是64位 8字节
//p p1 p2 p3
//printf("p=%d
", sizeof(p));
//printf("p1=%d
", sizeof(p1));
//printf("p2=%d
", sizeof(p2));
//printf("p3=%d
", sizeof(p3));
操作系统和编译器 操作系统决定上线
编译器决定了你当前所用的环境
32个0 最大32个1 0-32个1
64个0 最大64个1 0-64个1
编译器环境有关:4字节32 8字节64
7.解引用
知道变量名p,就知道p绑定的内存段中保存的地址&x,就能够去操作&x指向的内存段.
int x = 10086;
int* p = &x;
p=100;
printf("%d
",x);
输出p就是x的首地址 *p解引用,可以修改p成为x的值
- 8.野指针
因为随机值内存,程序可能会大乱导致崩溃,内存泄漏
指针指向未知的内存段,我们把这样的指针称之为野指针.
9.空指针
int x=10086;
int* p=NULL; NULL/空/0
p=&x;
10.万能指针
int x=10086;char word='A';
int* p=&x;char*q=&word;(各个类型逐步对应)
void* 定义的指针变量,就是我们常说的所谓的万能指针.
11.多级指针
int x=10086;
int* p=&x;
int* q=&p;
q=&p=地址;
*q=p=&x=地址;
**q=*p=x=10086
12.指针的骚操作一