C语言学习笔记day18

2024-04-11 1072阅读

温馨提示:这篇文章已超过409天没有更新,请注意相关的内容是否还可用!

1. 指针基本概念

C语言学习笔记day18
(图片来源网络,侵删)

    1.地址:用来区分内存中不同字节的编号

    2.指针:地址就是指针,指针就是地址

    3.指针变量:存储指针的变量,有时去掉变量,称为指针

2. 指针运算符

    1.&:

        1.获得一个变量在内存空间中的首地址

        2.让表达式类型升级 

    2.*:

        1.取指针指向空间中的值(所取空间大小取决于指针类型)

        2.将等号右边的值放入指针指向的空间

        3.让表达式类型降级 

        

    二级指针在C语言中2个地方使用:

        1.函数体内部想修改函数体外部指针变量值的时候,传指针变量的地址也就是二级指针

        2.指针数组传参时,数组的数组名是指向数组第一个指针元素的指针,也就是二级指针

3. 指针的算数运算

    +    指针偏移量为指向的数据类型大小个字节空间

    -    

    ++

    --    

        int *:                4

        char *:             1

        double *:            8

        struct student*:    44

        int **:                8

4. void指针

    void a;

    void *p;

    

    void指针常用来存储内存地址

    1.void类型指针不要使用* ++ --相关操作

    

    void *型指针和其余类型指针的转换

    void * -> char *        不需要做强制类型转换

              double *

              int * 

    char *   -> void *      需要类型转换(舍弃精度)

    double *

    int *

    

    主要用在作为函数参数,或者函数返回值表示兼容所有类型指针

    将内存地址为0x2000的空间赋值一个整形100 

    (*(int *)((void *)0x2000)) = 100;

5. const指针

    1.const int *p;

    2.int const *p;

    3.int *const p;

    4.const int *const p;

    5.int const *const p;

    

    1和2是等价的

    p可以改变,*p不可以改变

    p可以指向任意空间,但无法利用p修改指针空间的值

    

    3

    p不能改变,*p可以改变

    p只能指向初始化时的空间,无法指向其余空间,但可以利用指针修改指向空间的值

    注意:必须初始化 

    

    数组的数组名 

    

    4和5是等价的

    p不能改变, *p不能改变 

    注意:必须初始化

6. 指针数组和数组指针

    指针数组:

    int *a[5];

    定义一个数组,数组有5个元素,每个元素8个字节,共40个字节,每个元素都是指向

    整形变量的指针

    

    char *pstr[5];

    存储字符串数组使用二维数组

    操作字符串数组使用指针数组 

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]