嵌入式学习第十三天

9.指针:

(1)const指针
         const 关键字   常量(只读)

    1.const int *p;
    2.int const *p;

    1和2是等价的
    const修饰 *p,指针变量p的值可以改变,但不能利用指针修改指向空间中的值


    3.int *const p;
    const修饰 p,指针变量p的值不能改变,但可以利用指针变量p修改指向空间中的值
    一定要对指针初始化


    4.const int *const p;
    5.int const *const p;

    4和5是等价的
    const修饰p和*p,指针变量p的值不能改变,也不能利用*p改变直系那个空间中的值

2.void
    void a;


    int *、double *、char * 转换为 void * 需要强制类型转换(高精度转为低精度)
    void *转换为int *、double *、char *不需要强制类型转换(低精度转为高精度)

    strcpy 拷贝字符串
    memcpy 拷贝一段内存空间

10.函数指针和指针函数:

指针函数:是函数,函数的返回值类型是指针类型
函数指针:是指针,指针指向了函数

(1)指针函数:
        局部变量的地址不能返回,因为局部变量会随函数作用域结束被回收,虽然能够获得返回的地            址,但地址对应的空间已经被回收过了

        将函数的返回值作为下一个函数的参数

(2)函数指针:
        int (*Fun)(int a, int b) = NULL;
        定义函数指针变量Fun,占8个字节空间,指向int返回值有2个int参数的函数

11.C语言中二级指针使用场景:


(1)指针数组传参时:
        char *str[5];

        int Fun(char **ppstr, int len);


(2)函数体内想修改函数体外指针变量值的时候,要传递指针变量的地址即二级指针
        char *p = NULL;

        int Fun(char **pp);

构造数据类型

数据类型:
(1)基本数据类型:
            int 
            double 
            char 
(2)构造数据类型:
            1.struct 结构体
            2.union 共用体
            3.enum  枚举

1.结构体:


(1)结构体类型的定义
        struct 结构体名 
        {
            数据类型1 成员变量1;
            数据类型2 成员变量2;
            数据类型3 成员变量3;
            ..
        };

(2)结构体变量的定义
        数据类型 变量名;
        数据类型 *指针变量名;


(3)结构体变量的初始化:
        1.全部初始化:
            struct student s = {"zhangsan", 'm', 19, 100};

        2.局部初始化:
            struct student stu = {
                .name = "lisi",
                .score = 90,
            };  

(4)结构体成员变量的访问:
        .   :结构体变量类型访问成员变量使用 .
        ->  :结构体指针类型访问成员变量使用 -> 

        整体类型由成员变量类型决定

#include <stdio.h>struct student 
{char name[32];char sex;int age;int score;
};struct time 
{int hour;int min;int sec;
};struct date 
{int year;int mon;int day;
};struct datetime 
{struct date day;struct time t;
};int main(void)
{struct student s = {"zhangsan", 'm', 19, 90};struct student *p = NULL;struct datetime dt = {{2024, 1, 29}, {15, 51, 30}};struct datetime *pdt = NULL;struct student stu = {.name = "lisi",.score = 100,};struct datetime now = {.day = {.year = 2024,.day = 29,},.t = {.hour = 16,.min = 34,},};printf("姓名:%s\n", s.name);printf("性别:%c\n", s.sex);printf("年龄:%d\n", s.age);printf("成绩:%d\n", s.score);printf("姓名:%s\n", (&s)->name);printf("性别:%c\n", (&s)->sex);printf("年龄:%d\n", (&s)->age);printf("成绩:%d\n", (&s)->score);p = &s;printf("姓名:%s\n", p->name);printf("性别:%c\n", p->sex);printf("年龄:%d\n", p->age);printf("成绩:%d\n", p->score);printf("姓名:%s\n", (*p).name);printf("性别:%c\n", (*p).sex);printf("年龄:%d\n", (*p).age);printf("成绩:%d\n", (*p).score);printf("%d-%d-%d %d:%d:%d\n", dt.day.year, dt.day.mon, dt.day.day, dt.t.hour, dt.t.min, dt.t.sec);pdt = &dt;printf("%d-%d-%d %d:%d:%d\n", pdt->day.year, pdt->day.mon, pdt->day.day, pdt->t.hour, pdt->t.min, pdt->t.sec);return 0;}

作业:

1.定义一个结构体包含年-月-日三个成员
        struct date 
        {
            int year;
            int mon;
            int day;
        };
        从终端接收年月日信息存放到结构体中,计算该天为该年的第几天?计算该年剩余多少天?打印年月日信息
    


2.封装一个函数,给定一个数字字符串转换成其对应的整形数
        "123456"
         123456 

         int MyAtoi(char *pstr);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/438172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日常中MSVCP140.dll丢失的多种解决方法,轻松搞定MSVCP140.dll缺失问题

在计算机操作系统中&#xff0c;如果发现无法找到MSVCP140.dll这个特定的系统文件&#xff0c;可能会引发一系列运行问题和故障现象。MSVCP140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多基于Windows的应用程序正常运行至关重要。缺失这一动…

深分页怎么导致索引失效了?提供6种优化的方案!

深分页怎么导致索引失效了&#xff1f;提供6种优化的方案&#xff01; 上篇文章说到索引失效的几种规则&#xff0c;其中就有包括 深分页回表太多导致索引失效 的场景 本篇文章来聊聊深分页场景中的问题并提供几种优化方案&#xff0c;以下是本篇文章的思维导图&#xff1a; …

科研论文的数据格式

正确的数据格式是进行数据分析的基础&#xff0c;最近SPSSAU后台收到了很多小伙伴的提问——什么样的数据格式才能进行分析&#xff1f;某某方法的数据格式应该是怎样的&#xff1f;为什么我上传数据后没有显示&#xff1f;针对小伙伴们有关数据格式的提问&#xff0c;今天将论…

计算方法实验2:利用二分法及不动点迭代求解非线性方程

一、问题描述 利用二分法及不动点迭代求解非线性方程。 二、实验目的 掌握二分法及不动点迭代的算法原理&#xff1b;能分析两种方法的收敛性&#xff1b;能熟练编写代码实现利用二分法及不动点迭代来求解非线性方程。 三、实验内容及要求 二分法 (1) 编写代码计算下列数字…

定制,是透明拼接屏的常见项目,主要考虑这5个方面

透明拼接屏定制是一种根据客户的需求和场地条件&#xff0c;量身打造的显示解决方案。它不仅能满足客户的个性化需求&#xff0c;还能在商业展示、会议、广告等场合提供更具针对性的视觉效果。尼伽小编在本文就给大家介绍一下关于透明拼接屏定制的内容、方案设计、需要定制的情…

“福布斯警告”!比特币ETF将颠覆美元规则!特殊利益集团使禁掉比特币变得极其艰难!

在美国证券交易委员会&#xff08;SEC&#xff09;批准现货ETF近两周后&#xff0c;比特币价格一直在接近心理重要水平40000美元的区间波动。在最新一轮经济数据公布后&#xff0c;上周五比特币价格从趋势线支撑位约39808美元反弹&#xff0c;重新站稳4万美元大关。从基本面来看…

【Algorithms 4】算法(第4版)学习笔记 01 - 1.5 案例研究:union-find算法

文章目录 前言参考目录学习笔记1&#xff1a;动态连通性2&#xff1a;UF 实现 1&#xff1a;快速查找 quick-find2.1&#xff1a;demo 演示 12.2&#xff1a;demo 演示 22.3&#xff1a;quick-find 代码实现3&#xff1a;UF 实现 2&#xff1a;快速合并 quick-union3.1&#xf…

2023年全球软件开发大会(QCon广州站2023):核心内容与学习收获(附大会核心PPT下载)

在全球化的科技浪潮中&#xff0c;软件开发行业日新月异&#xff0c;持续推动着社会经济的飞速发展。本次峰会以“引领未来&#xff0c;探索无限可能”为主题&#xff0c;聚焦软件开发领域的最新技术、最佳实践和创新思想。来自世界各地的顶级专家、企业领袖和开发者齐聚一堂&a…

权威认可 | 全息网御多领域入选《CCSIP 2023中国网络安全行业全景册(第六版)》

2024年1月24日&#xff0c; FreeBuf咨询正式发布《CCSIP&#xff08;China Cyber Security Industry Panorama&#xff09;2023中国网络安全行业全景册&#xff08;第六版&#xff09;》。FreeBuf咨询全景图/全景册系列&#xff0c;以PDR网络安全模型为基础&#xff0c;并参考I…

算法39:统计全 1 子矩形(力扣1504)----单调栈

题目: 给你一个 m x n 的二进制矩阵 mat &#xff0c;请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[1,0,1],[1,1,0],[1,1,0]] 输出&#xff1a;13 解释&#xff1a; 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩…

ChatGPT初体验——让他写代码,走起

⭐️ 前言 今天注册了Google账户&#xff0c;并通过Gmail体验了一下ChatGPT3.5&#xff0c;让他帮小编写了几个python程序&#xff0c;而且不用任何改动便可以运行&#xff0c;666&#xff0c;感觉很爽。 体验ChatGPT3.5很简单&#xff0c;只要能科学上网和Google账户就行&am…

【Linux C | 进程】Linux 进程间通信的10种方式(1)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…