华清远见嵌入式c语言学习笔记

C补习阶段总结

毕业已经快有两年了,C语言还是刚上大学那会学习的了,该还的和不该还都都一并还给了当初的老师了。

还记得那会C语言是我们班挂科率最高的一门课程,我侥幸得以飘过,但是也给自己留下了C语言比较难的观念。计划来学习嵌入式开发之前,我都还一直比较担心会不会学不懂,跟不上老师的节奏什么的,这也是我比较担心的。最后的最后还是在朋友的推荐下来华清进行学习。

来到华清进行学习后,我对本次的补习有了一个大致的了解,其主要分为:

C语言补习              15  √

Linux 以及c高级 6

数据结构 6

IO、进程线程 6

网络编程 7

C++ 9

QT 8

ARM接口技术 7

系统移植 5

驱动编程 8

Python人工智能       9

项目实战 20

目前以及完成了C语言补习、linux及C高级以及数据结构的学习。

以下是我关于C语言补习过程中知识点的总结

  1. .c文件编译过程

预处理-->编译-->汇编-->链接

预处理:gcc -E file   展开头文件,进行宏替换     生成.i文件

编  译:gcc -S file   查找语法错误    生成.s文件  

汇  编:gcc -c file   把汇编代码解释成二进制文件 生成.o文件

链  接:gcc file.o  链接程序运行时一些必要的库 生成.o文件

助记方式

键盘上的esc按键对应预处理编译和汇编的命令;其对应生成的文件后缀为iso(镜像文件后缀)。

  1. static

将变量存入静态缓存区;

修饰局部变量时:生命周期延长,作用域不变;

修饰全局变量时:生命周期不变,作用域被限制;

修饰函    数时:生命周期不变,作用域被限制;

  1. 控制语句

break:跳出当前所在的控制;

continue:跳出本次控制(循环);

return:结束函数模块,并且可以返回一个值;

  1. 指针

内存是由多个内存单元组成,每个单元都由一个或多个字节组成,每个字节都有唯一编号,我们叫这个编号为地址;

地址就是指针;

指针变量的数据类型是由指向空间的类型决定的。

const 修饰指针:

const int *p :指针指向空间的内容无法修改,只读;

int *const p :指针的指向无法修改;

  1. 数组

数组是一些相同类型的集合;存储上是一片连续的存储空间。

使用时需要注意不能越界,

二维数组:

多个相同类型的一维数组的集合,储存上也时一片连续的空间。

注意:二位数组的行和列是为了方便理解而抽象出来的,实际上其在内存空间中的存储是线性的。

  1. 指针与一维数组的关系

一维数组的数组名就是数组的指针,指向数组的首元素的地址,但是数组名是常量,不能更改,也不能进行自加和自减。

  1. 指针与二位数组的关系

数组指针:也称行指针;本质是指针,指向二维数组的每一行的首元素的指针;

int (*p)[n]  :p :变量名称  n :与二位数组的行数相等;

int a[3][n];

p = a ;

以上代码片段中:p[0] 表示指向a数组的第一行第一个元素

p[i]+j 表示指向a数组第i行第j列的元素;

p[i][j] == *(p[i]+j) == *(*(p+i)+j)

函数{
    特定功能的代码模块
    声明:<存储类型><数据类型> 函数名(参数列表);
    定义:<存储类型><数据类型> 函数名(参数列表)
        {
            函数体;
            return 返回值;
        }
        数据类型:不由函数本身决定,而是由函数的返回值类型来决定
                    void 表示没有返回值
                    void *表示返回一个任意类型的指针
        返回值:只能返回一个结果(数值、地址)
        参数列表:形参,在意类型
        
    使用:函数名(参数列表);
        参数列表:实参,在意具体的数据(一定要对应形参的类型)
        
    
    虽然形参只在意类型,但是函数在调用的时候形参也会开辟空间    
    
    
    参数传递方式:{        //函数调用都会涉及到拷贝过程
        按值传递:拷贝内容,有点在于很安全因为只操作副本,缺点就是不能改变实参内容
        按地址传递:拷贝实参的地址(地址在内存中是唯一的),形参一定能通过实参的地址访问实参的空间
    }
    
    数组作为函数的参数:{
        直接传递数组的地址是无法确定数组大小,一定要传递数组的大小作为参数
    }
}


指针函数:{
    返回值是一个指针的函数
    char *func(参数列表);
    
    练习:
        (1) 编写strcat函数,不适用任何库函数。函数原型:char *MyStrcat(char *dst, const char *src);
        (2) 为什么需要char *作为返回类型
            因为要满足链式表达式
            
    练习2:
        编写strcpy函数
        
    练习3:
        编写strcmp函数
}

函数指针:{
    函数是有地址的,可以存放在指针变量里面
    int *p = &func;
    *p        //无法实现函数调用
    
    特殊的指针:函数指针
    int (*pfunc)(参数列表);
    
    int add(int a, int b){}
    int (*pf)(int,int);
    
    函数的名字就是函数的地址,对函数的名字取地址也是一样的效果
}

函数指针数组:{
    int (*pfunc[])();
    
    typedef int (*pfunc)();
    pfunc arr[];
}

typedef:{
    重命名
    typedef unsigned int _uint32;
    
    typedef char data_t;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嵌入式Linux C语言应用程序设计是指在嵌入式设备上使用C语言编写应用程序,以实现特定功能的过程。华清远见培训PDF是一种培训资料,用于指导学习如何进行嵌入式Linux C语言应用程序设计的相关技术。 在嵌入式Linux C语言应用程序设计中,我们需要了解Linux操作系统的基本概念和原理,以及嵌入式系统的特点和应用场景。同时,我们也需要掌握C语言的基本语法和常用的编程技巧。 这门培训课程的目标是教授学员如何使用C语言开发嵌入式应用程序,并深入理解Linux系统的底层原理。培训材料以PDF形式提供,方便学员在自己的电脑上随时学习和参考。 在课程中,我们将学习如何利用Linux的系统调用和API来开发应用程序,如文件操作、进程管理、网络通信等。同时,我们也将学习如何进行硬件编程,与设备进行交互,如GPIO控制、串口通信等。 除了理论学习,这门培训将通过一些实践项目,帮助学员更好地掌握所学知识。学院将提供实验环境和开发板,供学员进行实践操作。通过这些实践项目,学员可以加深对嵌入式Linux C语言应用程序设计的理解,并提高自己的编程能力。 总而言之,嵌入式Linux C语言应用程序设计华清远见培训PDF为学员提供了学习嵌入式开发的理论知识和实践项目,帮助学员掌握如何用C语言编写嵌入式应用程序,并更好地理解Linux系统的工作原理和特点。这对于从事嵌入式开发的人员来说,是一门非常有价值的课程。 ### 回答2: 华清远见培训提供了一门关于嵌入式Linux C语言应用程序设计的PDF教程。这门教程专注于嵌入式Linux系统的C语言编程,旨在帮助学员掌握在嵌入式设备上开发应用程序的技能。 教程内容主要包括以下几个方面: 1. 嵌入式系统概述:介绍了嵌入式系统的基本概念和特点,以及嵌入式Linux系统的结构和运行环境。 2. Linux内核编程:讲解了如何进行Linux内核的配置和编译,以及如何开发内核模块和驱动程序。 3. 嵌入式应用程序开发:涵盖了Linux下的C语言开发工具链的使用,包括编译、调试和测试等方面的内容。同时,还介绍了常用的嵌入式开发库和函数,以及如何进行文件系统的管理和操作。 4. 嵌入式设备的外设驱动开发:详细讲解了如何开发各种外设的驱动程序,包括串口、SPI、I2C等接口的使用和操作。 5. 实际项目案例:通过一些实际的嵌入式项目案例,帮助学员将所学知识运用到实际的应用中。 这门教程适合已经具备一定编程基础的学员,尤其是对嵌入式系统和Linux有一定了解的人群。通过学习这门课程,学员将能够掌握嵌入式Linux系统的应用程序设计和开发技巧,提高自己在嵌入式领域的竞争力。 ### 回答3: 《嵌入式Linux C语言应用程序设计》是华清远见培训机构提供的一门培训课程,主要面向对嵌入式Linux系统开发有兴趣的学习者。 嵌入式Linux是一种嵌入式操作系统,它是将Linux操作系统适配到嵌入式设备中的一种实现方式。嵌入式系统是一种专门为具体应用设计的计算机系统,通常它具有小型化、低功耗、实时性要求等特点。而嵌入式Linux作为一种开源操作系统,具有稳定性强、适应性广等优点,因此在嵌入式设备的开发中得到了广泛应用。 C语言作为一种常用的编程语言,在嵌入式系统开发中也是广泛使用的工具。学习嵌入式Linux C语言应用程序设计》课程可以帮助学习者掌握在嵌入式Linux环境下进行C语言程序设计的技能。课程内容包括嵌入式Linux系统的搭建与配置、嵌入式设备的驱动程序编写、应用程序的开发等方面的知识。 在课程中,学习者将通过理论学习和实践操作相结合的方式,了解嵌入式Linux系统的基本原理和运行机制,并学习如何使用C语言进行嵌入式系统的开发学习者将掌握Linux系统的搭建与配置方法,了解嵌入式设备的驱动程序开发流程,并学会使用C语言进行应用程序的编写。通过实际操作,学习者能够熟悉开发工具的使用,掌握调试技巧,提高代码质量和效率。 通过学习嵌入式Linux C语言应用程序设计》课程,学习者能够全面了解嵌入式Linux系统的开发流程和技术要点,掌握驱动程序开发和应用程序编写的基本技能,为以后从事嵌入式Linux系统开发工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值