赞
踩
哟,大家好,我是一名机械专业的学生,毕业已经两年了,之前也一直在机械行业工作,干过技术员,也干过结构设计的工作。想转行嵌入式,并不是一时兴起,我从以前的同事哪里第一次接触到了嵌入式的行业,那时候他负责单片机的程序编写工作,我负责做外形的结构设计。某天和他讨论工作方面的问题时聊到了互相所在行业的话题,他说嵌入式的工作很累,又难入门又要秃头,但我个人觉得,嵌入式行业是国家未来发展的重要环节,再加上我在校时也曾学习过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语言基础的学习中,觉得需要注意的点与一些小技巧,欢迎大家进行斧正,也希望能够给和我有相同经历的朋友们一些帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。