• c语言指针的概念


    目录

    一、指针的概念

    二、指针的四要素

    三、指针与指针变量

    四、指针的类型

    五、指针运算

    1、取地址运算符&

    2、间接运算符*

    3、指针设声明

    六、指针的作用

    七、参考  


    一、指针的概念

    为了方便访问内存中的内容, 我们给每个内存单元一个编号,这个编号称为地址即指针.

    1. 指针具有指向性,存放其他变量的内存地址。
    2. 指针就是地址,地址就是指针。本质是操作受限的非负整数
    3. 指针是一种数据类型, 所以指针都有自己的内存,存储的是地址(编号).
    4. 指针是一个变量,用来存放地址的变量,有类型的区分。
    5. 系统(32位或64位)中所有指针大小都是一样的
    6. 指针和指针变量是两个不同的概念
    7. 指针就是有指向的变量
    8. 二级指针指向的是存放同类型一级指针的空间,
    9. 多级类推二级指向一级一样指向它的前一级指针存放空间 

     

    二、指针的四要素

    1. 指针本身的类型 除去指针名,剩下的就是指针本身的类型
    2. 指针指向的类型 除去指针名和一个*,剩下的就是指针指向的类型
    3. 指针本身的内存用来存储一个编号(32位系统占4个字节,64位系统占8个字节)
    4. 指针指向的内存 可以是各种类型,指向起始地址

    三、指针与指针变量

    1.   指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针。
    2. 指针就是地址,地址就是指针,它是一个形无符号整型,一个整数,它的大小取决于系统是16 32 还是64位的 16/8=2byte 32/8=4byte 64/8=8byte.
    3. 指针变量其实是一个变量,只不过其存放的内容为地址,如 int* p,这个p是指针类型,它的值存的是地址。
    4. 指针引用后得到的是该地址所对应的变量的值。

    5. 二级指针是指向一级指针地址的指针

     

    1、p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数 

    2、*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。

    3、 &是取地址运算符,&p就是取指针p的地址。

    &p它到底和p有什么区别?

           p和&p区别在于指针p同时也是个变量,既然是变量,编译器肯定要为其分配内存地址,无论是普通的变量还是指针变量在内存中都有一个地址 ,就像程序中定义了一个int型的变量i,编译器要为其分配一块内存空间一 样。

           &p表示编译器为变量p分配的内存地址,而p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要让它指向一个内存地址,这个它指向的内存地址就用p表示。而且,p指向的地址中的内容就用*p表示

    四、指针的类型

    1. 基本类型:int 、short、long、float 、double、char,如 int *p;//表示定义一个指针,这个指针指向整形变量,这个指针将存放的是整形变量的地址。
    2. 数组指针:**指针指向一个数组,int (*a)[10]; //表示指针指向一个int型的长度为10的数组
    3. 函数指针:**指针指向一个函数,void (*a)();//表示指针指向一个无参数无返回值的函数

    五、指针运算

    1、取地址运算符&

    • 格式:&变量名
    • 含义:取出存放变量的地址
    • 用途:跨函数传递变量值(新手可暂时不用理会)

    2、间接运算符*

    • 格式:*指针名/地址名
    • 含义:取出存储在地址中的对应值

    3、指针设声明

    • 声明格式
    • int * pi
    • char * p

    *注 包含一个&和一个*,两者为互逆运算。&获取变量的内存地址,*获取指针所指向变量的内容。

    六、指针的作用

    C语言中使用指针可以:

    1. 方便地使用字符串
    2. 有效地表示复杂的数据结构
    3. 动态分配内存
    4. 得到多于一个的函数返回值

      七、参考   

    1. c语言指针知识点总结
    2. C语言知识:数组和指针
    3. C语言指针知识点总结 - 爱码网
    4. 辛伯达岛的博客-CSDN博客_c语言指针知识点总结

     

  • 相关阅读:
    使用cmd运行第一个java程序(含有查看文件后缀名方法)
    Feign接口调用GET请求@RequestParam传参丢失
    form 表单恢复初始数据
    【MyBatis】多条件查询、动态SQL、多表操作、注解开发
    【OpenCV】-重映射
    Java skill - 服务同时开始https和http端口
    中间件MQ面试题之Rabbitmq
    python抽取文件
    AMAZINGIC晶焱科技推出低操作电压ESD保护元件
    Visio——对齐方法的规则
  • 原文地址:https://blog.csdn.net/weixin_42322206/article/details/125550817