初探指针
1、内存
计算机中最小单位:bit位,最小存储单位:byte字节
一个正在运行的程序我们称之为进程
2、变量
2.1 定义变量
类型名 变量名;
2.2 引用
使用变量名就是在使用变量名把绑定的内存段。
3、地址与首地址
地址:在计算机中每一个字节都有一个与之相匹配的编号,我们把它称之为地址
首地址:变量的第一个地址就是首地址。
4、指针
首地址就是指针
在内存中我们的地址是连续的,所以意味着知道了变量的首地址,知道了变量的类型,就可以确定变量对应内存的段的值,所以我们把首地址称之为指针。
5、指针变量
如果我们再次的开辟内存用来保存指针,我们就把这个开辟的内存绑定的变量称之为指针变量。
6、指针大小 32位 64位
int* p 4 8
char* p1 4 8
float* p2 4 8
double* p3 4 8
7、解引用
知道变量名p,就知道p绑定的内存段中保存的地址&x,就能够去操作&x指向的内存段。
#include <stdio.h>
int main(){
int x=10086;
int* p=&x;
printf("%d\n",*p);//10086,解引用
return 0;
}
8、野指针
指针指向位置的内存段,我们把这样的指针称之为野指针。
#include <stdio.h>
int main(){
int* p=0x1234;
*p=10086;//没有权限修改地址
return0;
}
9、空指针
#include <stdio.h>
int main(){
int* p=NULL;
if(NULL!=p){
*p=100;
}
else{
printf("这是一个空指针");
}
return 0;
}
10、万能指针
void* 定义的指针变量
#include <stdio.h>
int main(){int
int x=10086;
char y='A';
int* p=&x;
int* q=(int*)&y; //强制类型转换,建议不用
void* q=&y; //万能指针
return 0;
}
11、多级指针
// *解引用与&取首地址符号 一一对应
#include <stdio.h>
int main(){int
int x=10086;
int* p=&x; //p是x变量的首地址
int** q=&p; //q表示p指针的首地址
//*q表示指针p里里面的内容
//**q表示x里面的内容
int*** q1=&q //q1表示q的首地址
//*q1表示q里面的内容,即p的首地址
//**q1表示p里面的内容,即x首地址
//***q1表示x里面的内容。
return 0;
}

浙公网安备 33010602011771号