当前位置:   article > 正文

机械专业转行嵌入式零基础开始学习C语言_机械结构设计转嵌入式

机械结构设计转嵌入式

哟,大家好,我是一名机械专业的学生,毕业已经两年了,之前也一直在机械行业工作,干过技术员,也干过结构设计的工作。想转行嵌入式,并不是一时兴起,我从以前的同事哪里第一次接触到了嵌入式的行业,那时候他负责单片机的程序编写工作,我负责做外形的结构设计。某天和他讨论工作方面的问题时聊到了互相所在行业的话题,他说嵌入式的工作很累,又难入门又要秃头,但我个人觉得,嵌入式行业是国家未来发展的重要环节,再加上我在校时也曾学习过C语言,所以便升起了转行的念头。

直到今年12月初,我才终于下定决心想要转行,然后自己便在网上找了许多的相关资料,虽然教学视频很多,但大多数都很杂乱,而且没有统一的知识梳理。对我来说就像是昨天才学完微积分,今天就跳到了线性代数一样。最后我在仔细咨询了我的前同事后,他说建议让我去报一个嵌入式的培训班,进行系统性的学习。最后我在对比了所在城市的几家培训机构后,选择了华清远见的嵌入式培训班,目前刚刚完成了C语言基础的课程,感觉老师教的其实挺不错的,每次布置的作业也是恰到好处,既能够用当天教的知识求解,在第二天完成了新的课程后,还能够根据新学习的知识进行优化解答,让人有一种举一反三的感觉,之后便要进行C高级的知识学习了,特地再次做一个知识回顾与总结。

以下是我在学习过程学到的一些方法:

1、在听教师讲课时,要跟着一起做好笔记,这样不容易走神,有时候教师在课上只是随口提的一些知识点,如果不记录在笔记上的话可能下课就忘了。

2、在做练习题和作业时,遇到想不通的问题最好能够找个地方记下来,因为现在想不通的地方,等之后回顾的时候,便会加深自己的理解,逐渐构成自己的一套编程逻辑。

3、Linux的一些应用小技巧

ctrl+shift+T:打开一个并行的新终端窗口

alt+1/2/3:快速切换窗口

ctrl+L:清除终端屏幕

reboot:重启

shutdown:关机

Linux系统中创造的文件后缀并不影响文件自身的类型,但gcc编译器只能编译以‘.c’为后缀的文件

Linux系统与window的共享文件夹在 /mnt/hgfs/ 中

Linux的常用命令,网站地址:www.runoob.com

Linux终端里再输入命令后想要跟文件名时可以输入前几个字符后通过Tab键来补齐后续字符

4、C语言程序与内存的关系

C语言内存 存储位置:在硬件上,内存有32根地址线,所以说在计算机内存存放时便有0~4G(2^32)的容量可以分配

①代码段/常量区 该段内存区域内的内容 只读 不可修改

②静态区 该段内存区域内的内容 可读 可写 在程序运行前就分配好了 且其中的 变量 会一直存在 直到程序结束

如:全局变量(在函数之外定义的auto变量),或静态变量(使用static修饰的变量)会放在静态区

③栈区该段内存区域 会自动(在程序运行中) 分配

如:局部变量 临时变量 函数的形参 函数调用 会放在栈区

④堆区该段内存区域 由程序运行时,程序员设计 申请与释放(手动分配)

C语言编写的程序运行起来后,以上4段内存分配方式都会存在

于 静态区 变量 若没有初始化 会自动赋值为0

对于 堆区和栈区, 若没有初始化 其变量内容是”随机“(不可预料,有可能是上一次没有释放的内存中的内容)的

5、关于数据类型的转换

当 不同类型数据间 进行运算 或 赋值 等操作时 , 存在类型转换

①隐式类型转换:由编译器 自动完成了 类型的转换 (有隐藏风险)

转换规则:将精度低的数据类型,转换为精度高的数据类型

将范围小的数据类型,转换为范围大的数据类型

将有符号数的数据类型,转换为无符号数的数据类型

②强制类型转换:

手动的 将一个类型 转换为 另一个类型

当转换的 精度不匹配时,会存在 数据精度丢失的情况

在需要转换的类型前加上目标类型

格式:(目标类型)表达式

如:float f = 10.2;

printf(”f=%d\n“,(int)f);//最后输出的结果会丢掉小数点与之后的值,f=10

6、Scanf语句再输入时,可以进行的一些操作

scanf(”%*6d%4d/%2d/%2d“,&y,&m,&d)//%*6d代表输入的数据中前面6个数据不需要

scanf(”%【^\n】s“,&s);//表示输入的所有数据都保留,只以回车为结束符

scanf(”%【0-9】“,&s);//表示输入的数据中,只取出0-9的数字,遇到其他数据停止读取

如何判断输入成功,可以 int ret =scanf(),

这样输入成功则ret打印出来为‘1’(若有多个变量来存储数据,则有几个成功,则ret返回几个数字),不成功为‘0’

7、数组的一些注意点

元素个数的计算 == sizeof(数组名)/sizeof(元素类型);//sizeof计算出来的数据是 long int型的

字符数组 与 字符串:

字符串:一定有结束符“\0”,可能是常量 如“hello”

字符数组:在数组中 连续存放了 一些字符, 可能没有结束符“\0”通常是变量;

数组的越界操作:

是非法的内存访问,其结果不可预知

可能出现的情况:

1、提示段错误 被系统终结进程

2、数据不保证可靠

8、函数的一些注意点

函数的定义:

返回值类型 函数名 (型参列表)

{

函数体;;//即 为代码块

}

形参与实参:

实参是调用者 传递给函数 的 形参的值,只是将实参的数据复制了一份给形参,实参不参与函数的运算

函数操作型参 是不会影响实参的

传递数组的时候,一般传递的是数组的首地址

地址传参:即 形参传递的内容是 实参的地址,此种情况下 调用的函数可以通过这个地址(形参)来操作实参

函数声明:

在函数被调用前,将除函数体外 的部分 放在调用前的 函数外;

以上,是我在C语言基础的学习中,觉得需要注意的点与一些小技巧,欢迎大家进行斧正,也希望能够给和我有相同经历的朋友们一些帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/637274
推荐阅读
相关标签
  

闽ICP备14008679号