C语言学习笔记day18

2024-04-10 17:20
文章标签 语言 学习 笔记 day18

本文主要是介绍C语言学习笔记day18,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 指针基本概念

    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];

    存储字符串数组使用二维数组
    操作字符串数组使用指针数组 

这篇关于C语言学习笔记day18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/891681

相关文章

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安