嵌入式C语言编程小知识总结
如何教会孩子学习编程
1、数组指针
1int (*p)4]
表示*p有4个元素,每个元素为整型。也就是p所指的对象有4个整型元素的数组,既P是行指针。
2 指针数组
Ø 一个数组,其元素均为指针类型数据,称为指针数组;即指针数组中的每一个元素都相当于一个指针变量。
Ø 一维指针数组的定义形式为:
类型名 *数组名数组长度]
eg:int *p4]:
作用:它用于指向若干个字符串,使字符串处理更加方便灵活。适用于一个二维字符串数组,其中每一行的字符数组的长度各不相同
eg:char * name]={“Follow me”,”BASIC”,”GreatWall”};
2、 结构体
1 可以用结构体变量做实参。但是用结构体变量作实参时,采取的是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序递给形参。形参也必须是同类型的结构体变量。
eg:pint(su);//注在此处su为结构体
注:这种传递方式在空间和时间上开销较大,如果结构体的规模较大时,开销是很可观的。
2 用直向结构体变量(或数组)的指针作实参,将结构体变量(或数组)的地址传给形参
eg:print(&su);//注在此处su为结构体
3、 共用体
1 共用体把几种不同数据类型的变量存放在同一块内存里。公用体中的变量共享同一块内存。
2 定义公用体类型变量的一般形式为:
union 共用体名
成员列表;
变量列表;
3在共用体中同一块内存可以用来存放几种不同类型的数据,但在某一时刻只能在其中存放一个成员变量。共用体变量中起作用的成员是最后一次存入的数据。
eg: union data
int i;
char c;
double d;
};
union data a;
共用体变量a中的成员i,c,d三个变量在内存中从同一个地址开始存储。如进行如下赋值:
a.i = 100;
a.c = ‘A’;
那么此时共用体变量a中的成员i已经没有值了,因为存储该值的内存现在已经被用来存储成员c的值了。
4 共用体变量的长度取决于其成员的最大长度:
说明:
结构体变量所占内存的长度是各个成员的总和,每个成员分别占有自己的存储空间。共用体变量所占内存的长度是其最长成员的长度。当然,编译器出于提高访问效率的目的,在编译分配存储空间时往往要进行对齐操作。
对齐操作以最大基本类型为准。即以最大基本类型为基本单元。若按实际算下的长度不是基本单元的整数倍,则其实际长度应该是基本单元的整数倍。
(在TurboC中不进行对齐,在Linux中进行对齐)
4、CPU字长与存储器位宽不一致处理
例如:使用共用体来解决这一冲突:
union send_temp{
UInt16 words;
UInt8 bytes2];
}send_buff;
eg:send_buff.bytes0]=a;//此处a 是8位
send_buff.bytes1]=b;//此处 b 是8位;
此时就将8位字拼成了16位字存储了。
发送时send(send_buff.words)就可以每次发送一个16位的数据了。
5、C语言符号优先级:
1复合赋值运算符号:
a+=3*5;
等价于a=a+(3*5);
6、关键字volatile的用法
volatile变量可能用于如下几种情况:
1设备的硬件寄存器(如:状态寄存器)
2一个中断服务子程序中会访问到的全局变量
3多线程应用中被几个任务共享的变量。
7、关键字register的用法:
当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言提供了一种变量,即寄存器变量。这种变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,从而提高效率。寄存器变量的说明符是register。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。
(1) 只有局部自动变量和形参才可以定义为寄存器变量。因为寄存器变量属于动态存储方式,凡需要采用静态存储方式的量都不能定义为寄存器变量,包括:模块间全局变量、模块内全局变量、局部static变量;
(2) register是一个建议型关键字,意指程序建议该变量放在寄存器中,但最终该变量可能因为条件不满足并未成为寄存器变量,而是被放在了存储器中,但编译器中并不报错(在C++语言中有另一个建议型关键字:inline)。
8、宏定义
在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。
1宏定义“像”函数;
2宏定义不是函数,因而需要括上所有“参数”;
3宏定义可能产生副作用。因而不要给宏定义传入有副作用的参数。
最后,提醒每一个it爱好者:如果你想要在短时间内快速入门,顺利掌握一门技术,建议还是认真学习视频。多练习,多动手。
如何教会孩子学习编程
教孩子学编程没有技巧,前提是家长一定要有耐心。有些孩子对于颜色、形状不是很敏感,家长可以通过举例子、编故事等方式引导孩子不断思考,激发孩子学习编程的兴趣及动力。
家长是孩子最好的人生导师,所以家长一定要给孩子树立一个良好的学习榜样,对于新鲜的事物保持谦逊好奇的心态,站在孩子的角度去分析,解决问题的方法,教会孩子思考、分析、解决问题的思维方式,远比家长轻松解决孩子问题来的更有效果。
孩子学习编程的好处有哪些
1、编程能孩子培养逻辑思维能力和抽象思维能力。
为了使计算机能够理解人的意图,孩子就必须要将解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。
学习编程能够培养孩子的体系化思维、逻辑思维和抽象思维!经证实80%孩子在学习少儿编程后,自然科学理解能力有显著提升!
2、编程提升创造力,帮助孩子跳出思维定式。
根据调查研究,孩子在15岁后便会形成思维定式,如果他们在此前从未有过发挥独一无二的创造力的机会,将来不管遇到什么样挑战,大脑会惯性地告诉他们,这件事是无能为力的,孩子的人生从此变得平庸。而编程的过程“就像艺术一样在创作”,孩子们会享受到创造的乐趣。
3、编程增强孩子自信心,提高做事情的专注力。
完成一个完整程序的制作能够有效提高孩子做事情的专注力,一个由自己一步步建立而来的作品更是能够增强孩子的自信心,让他们可以更有勇气地面对将来学习、生活中可能遇到的挫折。
4、编程将会像阅读和写作一样成为孩子最基本的能力之一。
随着技术的发展,特别是智能时代的到来,编程已不是工程师的专利。编程会成为下一个“通用语言”。所以,孩子从小就可以通过一些像Light-bot、Scratch、小卡机器人等编程工具来学习编程。