初探指针

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;
}
posted @ 2020-10-21 17:50  66如风  阅读(75)  评论(0)    收藏  举报