指针
指针:
1.内存
计算机中最小的单位是     bit位
最小的的存储单位是        byte字节    1字节=8位;
2.变量
2.1  定义变量
类型名   变量名
2.2 引用
使用变量就是使用变量名绑定的内存段
3 地址与首地址
地址:在计算机中每一个字节都有一个与之相匹配的编号
首地址:变量的第一个地址
4 指针
首地址就是指针
在内存中我们的地址是连续的,所以意味着知道了变量的首地址,知道了
变量的类型,就可以确定对应内存的段的值,所以我们把首地址称之为指针
5 指针变量
如果我们再次开辟内存,用来保存指针,我们就把这个开辟的内存
绑定的变量称之为指针变量
int main()
{
int x=10086;
//&x 他是一个x的变量的首地址,也称之为指针
int p //p就是一个指针类型的变量
}
6 指针大小
int p;
char p1;
float p2;
doublep3;
printf("int=%d\n",sizeof(int));                         //int=4
printf("char=%d\n",sizeof(char));                  //char=1
printf("float=%d\n",sizeof(float ));          //float=4
printf("double=%d\n",sizeof(double ));           //double=8
//32个0    最大32个1     0-32个1
//64个0     最大64个1     0-64个1
//编译器环境有关:4字节32位,8字节64位
printf("int=%d\n",sizeof(int));                         //int=8
printf("char=%d\n",sizeof(char));                  //char=8
printf("float=%d\n",sizeof(float));          //float=8
printf("double=%d\n",sizeof(double));           //double*=8
printf("p=%d\n",sizeof(p));                         //p=8
printf("p1=%d\n",sizeof(p1));                  //p1=8
printf("p2=%d\n",sizeof(p2));          //p2=8
printf("p3=%d\n",sizeof(p3));           //p3=8
7 解引用
知道变量名p,就知道p绑定的内存段中保存的地址&x,
就能够去操作&x指向的内存段
int main()
{
int x=10086;
intp=&x;
printf("%d\n",p);  // 10086
printf("%#X\n",p);// p为x变量的首地址
return 0;
}
8 野指针
指针指向未知的内存空间,我们把这样的指针称为野指针
int*p=&x;
p=10086;
printf("%d",p);//会报错 "使用未初始化的局部变量p"
int *p=0x1234;  //我可复制
p=10086;   //我没有修改的权限
printf("%d",p);   //运行出来什么都没有
9 空指针
int*p=NULL;    NULL/空/0
int x=10086;
int*p=NULL;
p=&x;
if(NULL!=p){
P=100;
}
else{
printf("这是一个空指针\n");
}
printf("%d\n",p);//10086
10 万能指针
void*  定义的指针变量,就是万能指针
int x=10086;
char b=‘A';
intp=&x;
void=&b;
11 多级指针
//解引用与&取首地址符号一 一对应
int x=10086;
intp=&x;  //p是x变量的首地址
int** q=&p;//q表示的是p指针的首地址
//q表示的指针p里面的内容
//**q表示的才是x里面的内容
printf("q=%#X\n",q);     // q=0X2FDEF628
printf("&p=%#X\n",&p);  //&p=0X2FDEF628
printf("-----------------------\n");
printf("q=%#X\n",q);   //q=0X2FDEF628
printf("&x=%#X\n", &x);   //&x=0X2FDEF628
printf("p=%#X\n",p);    //p=0X2FDEF628
printf("-----------------\n");
printf("q=%d\n",q);   //**q=10086
printf("X=%d\n",x);             //x=10086
printf("p=%d\n",p);      //*p=10086
                    
                
                
            
        
浙公网安备 33010602011771号