c编程实践
第一部分 基础知识
第1章 Linux环境下C语言的开发 2
1.1 Linux下的C语言开发环境 2
1.2 在Linux中使用C语言开发 3
1.2.1 开发流程和开发工具 3
1.2.2 Linux中程序的运行原理 4
第2章 嵌入式环境中的C语言开发 7
2.1 嵌入式C语言的开发环境 7
2.2 嵌入式开发中C语言编程要点 9
第二部分 Linux环境中
C语言的开发环境和工具
第3章 Linux的文本编辑工具VI 12
3.1 VI编辑器概述 12
3.1.1 VI简介 12
3.1.2 VI的工作模式和使用
3.1.2 之前的准备 12
3.1.3 进入和退出VI 13
3.2 VI的增强版VIM 16
3.3 VI编辑器的基本使用方法 17
3.3.1 在屏幕上移动光标 17
3.3.2 插入文本 20
3.3.3 删除文本 22
3.3.4 修改文本内容 25
3.3.5 替换文本内容 27
3.3.6 合并文本内容 30
3.3.7 移动文本内容 30
3.4 VI编辑器的命令和高级操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高级的操作和
3.1.2 使用技巧 35
第4章 GCC程序开发工具 39
4.1 GNU工具综述 39
4.2 GCC的编译和连接 43
4.2.1 工程示例 43
4.2.2 编译、汇编和连接 46
4.2.3 动态库 48
4.3 GCC的二进制工具 49
4.3.1 ar(归档工具) 49
4.3.2 readelf(读取ELF格式
3.1.2 文件信息) 51
4.3.3 strings(查看字符串) 54
4.3.4 nm(显示符号信息) 55
4.3.5 strip(删除符号) 57
4.3.6 objmp(显示目标
3.1.2 文件信息) 58
4.3.7 obj(复制目标文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make机制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makefile使用示例 69
5.2.1 简单的Makefile 69
5.2.2 Makefile中的依赖关系 71
5.2.3 Makefile中使用隐含规则
3.1.2 来编译程序 73
5.2.4 Makefile中指定依赖关系的
3.1.2 编译 76
5.3 自动生成Makefile 78
5.3.1 自动生成Makefile的意义和
3.1.2 相关工具 78
5.3.2 自动生成Makefile的流程 79
第6章 GDB调试工具 85
6.1 GDB简介 85
6.2 使用GDB调试程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高级命令 92
6.2.4 attach命令的使用 94
6.3 远程GDB调试 95
6.3.1 本地GDB调试和远程GDB
3.1.2 调试的比较 95
6.3.2 远程GDB调试流程 97
6.3.3 远程GDB调试示例 98
第三部分 库函数
第7章 C语言标准库函数 106
7.1 ISO的C语言标准库函数
7.1 分类 106
7.2 标准格式化输入/输出类函数 107
7.2.1 scanf函数:格式化输入
3.1.2 字符串 107
7.2.2 printf函数:格式化输出
3.1.2 字符串 109
7.2.3 putchar函数:输出字符到
3.1.2 标准输出 111
7.2.4 getchar函数:从标准输入
3.1.2 获取字符 111
7.2.5 putc函数:向文件输出字符 112
7.2.6 getc函数:从文件输入字符 112
7.2.7 gets函数:获得字符串 112
7.2.8 puts函数:输出指定字符串 113
7.2.9 ungetc函数:把字符
3.1.2 写回流中 113
7.3 字符处理类函数 114
7.4 字符串处理及转换函数 116
7.4.1 sprintf函数:格式化输出
3.1.2 字符串到一个缓冲区 116
7.4.2 strcat和strncat函数:
3.1.2 字符串连接 119
7.4.3 strcpy和strncpy函数:
3.1.2 字符串复制 120
7.4.4 strcmp和strncmp函数:
3.1.2 字符串比较 121
7.4.5 strlen函数:获取字符串
3.1.2 长度 122
7.4.6 strchr和strrchr函数:字符/
3.1.2 字符串定位 122
7.4.7 strstr函数:字符串查找 123
7.4.8 strrev函数:字符串逆序 124
7.4.9 strupr和strlwr函数:字母
3.1.2 形式转换 125
7.4.10 strp和strnp函数:
3.1.2 字符串复制 125
7.4.11 memset函数:内存设置 126
7.4.12 memmove函数:内存移动 126
7.4.13 memcmp函数:内存比较 127
7.4.14 memcpy函数:内存复制 128
7.5 数学计算类函数 128
7.6 数据结构和算法类函数 133
7.6.1 bsearch函数:二元搜索 133
7.6.2 lfind函数:线性搜索 134
7.6.3 lsearch函数:线性搜索 135
7.6.4 qsort函数:利用快速排序法
3.1.2 排列数组 136
7.6.5 rand函数:产生随机数 136
7.6.6 srand函数:设置随机
3.1.2 数种子 137
7.7 文件I/O操作类相关函数 137
7.7.1 fopen函数:打开文件 138
7.7.2 fclose函数:关闭文件 139
7.7.3 fgetc函数:从文件中读取
3.1.2 一个字符 139
7.7.4 fputc函数:将一指定字符
3.1.2 写入文件流中 139
7.7.5 fgets函数:从文件中读取
3.1.2 一字符串 140
7.7.6 fputs函数:将一指定的
3.1.2 字符串写入文件内 140
7.7.7 rewind函数:重设文件流的
3.1.2 读写位置为文件开头 141
7.7.8 ftell函数:取得文件流的
3.1.2 读取位置 141
7.7.9 fseek函数:移动文件流的
3.1.2 读写位置 141
7.7.10 fwrite函数:将数据写至
7.7.10 文件流 142
7.7.11 fread函数:从文件流读取
7.7.10 数据 142
7.7.12 remove函数:删除文件 143
7.7.13 rename函数:更改文件
7.7.10 名称或位置 143
7.7.14 freopen函数:重新打开
7.7.10 文件 144
7.7.15 fflush函数:同步缓冲区 144
7.7.16 fgetpos函数:获得文件
7.7.10 位置 145
7.7.17 fsetpos函数:设置文件
7.7.10 位置 145
7.7.18 mktemp函数:建立临时
7.7.10 文件 146
7.7.19 tmpfile函数:临时文件 146
7.7.20 tmpnam:得到临时文件名 147
7.8 日期时间类函数 147
7.8.1 clock函数:获得CPU时间 148
7.8.2 time函数:获得当前日历
7.8.2 时间 148
7.8.3 difftime函数:获得时间
7.8.2 差值 148
7.8.4 gmtime函数:将日历时间
7.8.2 转换成UTC时间 149
7.8.5 mktime函数:将UTC时间
7.8.2 转换成日历时间 149
7.8.6 asctime函数:将UTC时间
7.8.2 转换成字符串 149
7.8.7 ctime函数:将日历时间转换
7.8.2 成当地时间的字符串 150
7.8.8 localtime函数:将日历时间
7.8.2 转换成本地时间 150
7.8.9 strftime函数:转换日期和
7.8.2 时间格式 151
7.9 国际化和本地化函数 152
7.9.1 setlocale函数:本地化控制
7.8.2 函数 153
7.9.2 localeconv函数:本地化
7.8.2 转换 154
7.10 错误处理类函数 155
7.10.1 clearerr函数:清除流中的
7.10.1 结束指示符和错误指示符 155
7.10.2 feof函数:指示文件结束 155
7.10.3 ferror函数:指示文件出错 156
7.10.4 perror函数:输出出错信息 156
7.10.5 errno函数:错误编号记录 156
7.11 其他一些工具函数 157
7.11.1 assert函数:程序诊断 157
7.11.2 长跳转函数 157
7.11.3 可变长的参数控制函数 160
7.11.4 获取结构体成员函数
7.10.1 (宏) 161
7.12 一些标准库中有用的宏 161
第8章 Linux中C语言的扩展库
函数 163
8.1 文件I/O操作函数 163
8.1.1 open函数:打开文件 163
8.1.2 close函数:关闭文件 164
8.1.3 read函数:读文件 165
8.1.4 write函数:写文件 165
8.1.5 lseek函数:文件定位 167
8.1.6 ioctl函数:文件控制 167
8.1.7 flock函数:锁定文件 167
8.1.8 mmap函数和munmap函数:
8.1.8 内存映射 168
8.1.9 create函数:创建新文件 170
8.1.10 p函数和p2函数:
8.1.10 复制文件描述符 171
8.1.11 fcntl函数:改变已打开的
8.1.10 文件的属性 171
8.2 文件权限相关的操作函数 172
8.2.1 access函数:判断是否
8.2.1 具有存取文件的权限 172
8.2.2 chown函数和fchown函数:
8.2.1 改变文件的所有者 173
8.2.3 chmod函数和fchmod函数:
8.2.1 改变权限 173
8.2.4 unlink函数:删除文件 173
8.2.5 utime函数和utimes函数:
8.2.1 改变文件时间 174
8.2.6 umask函数:设置建立
8.2.1 新文件时的权限掩码 175
8.2.7 link函数:建立文件连接 175
8.2.8 stat函数、fstat函数和lstat
8.2.1 函数:获取文件信息 175
8.3 用户组操作函数 176
8.3.1 getgid函数和setgid函数:
8.2.1 获得/设置组识别码 176
8.3.2 getegid函数和setegid函数:
8.2.1 获得/设置有效的组识别码 177
8.3.3 getuid函数和setuid函数:
8.2.1 获得/设置真实的用户识别码 177
8.3.4 geteuid函数和seteuid函数:
8.2.1 获得/设置有效的用户识别码 178
8.3.5 getgroups函数和setgroups
8.2.1 函数:获得/设置组代码 178
8.4 信号类函数 179
8.4.1 kill函数:传送信号给指定的
8.2.1 进程 181
8.4.2 raise函数:信号发送函数 181
8.4.3 alarm函数:设置超时函数 182
8.4.4 signal函数:信号安装函数 182
8.5 进程处理函数 183
8.5.1 getpid函数和getppid函数:
8.2.1 获得进程ID和父进程ID 183
8.5.2 fork函数:建立子进程 183
8.5.3 sleep函数和usleep函数:
8.2.1 让进程暂停执行一段时间 185
8.5.4 exec函数族:找到可执行
8.2.1 文件 185
8.5.5 _ exit函数和_Exit函数:
8.2.1 结束进程执行 188
第四部分 C语言高级编程
第9章 动态内存的堆与栈 190
9.1 程序内存区域的使用 190
9.1.1 静态内存与动态内存 190
9.1.2 C语言中的动态内存 191
9.2 C程序中栈空间的使用 196
9.2.1 参数使用栈空间 196
9.2.2 自动变量使用栈空间 199
9.2.3 程序中较大的栈 201
9.2.4 栈空间的特性 202
9.3 C程序中的堆空间使用 203
9.3.1 分配和释放堆内存的库函数 203
9.3.2 库函数使用 204
9.3.3 堆内存的特性 218
9.4 堆内存和栈内存使用的比较 222
9.4.1 利用返回值传递信息 222
9.4.2 利用参数传递信息 226
9.4.3 堆与栈内存管理的区别 231
第10章 函数指针的使用 232
10.1 函数指针的概念 232
10.1.1 C语言函数的本质 232
10.1.2 函数指针在C语言中的
10.1.2 意义 234
10.2 函数指针的使用 237
10.2.1 函数指针使用初步 237
10.2.2 函数指针的类型定义 240
10.2.3 函数指针作为结构体成员 242
10.2.4 函数指针作为函数的参数 243
10.2.5 函数指针作为函数的
10.2.5 返回值 244
10.2.6 函数指针数组 246
10.3 函数指针使用示例 248
第11章 回调函数的使用 252
11.1 回调函数的概念与作用 252
11.1.1 程序调用的方式 252
11.1.2 回调函数的作用 254
11.2 回调函数的语法 254
11.2.1 简单的回调函数 254
11.2.2 完全角式的回调函数 256
11.3 回调函数的使用 259
11.3.1 qsort中的回调函数 259
11.3.2 atexit和on_exit函数的
10.2.5 注册退出函数 263
第12章 C语言实现对象编程 268
12.1 C语言实现基于对象编程的
12.1 概念与作用 268
12.2 C语言基于对象编程实现
12.1 封装 269
12.2.1 简单的程序示例 269
12.2.2 C语言基于对象编程的
10.2.5 详解 272
12.2.3 C语言基于对象编程与
10.2.5 C++面向对象编程的对比 275
12.3 C语言基于对象编程实现
12.3 部分继承功能 278
12.3.1 利用数据结构的包含实现
10.2.5 继承功能 279
12.3.2 利用私有指针实现继承
10.2.5 功能 282
12.3.3 C语言实现继承的总结 287
12.4 C语言基于对象编程实现
12.4 部分多态功能 288
12.4.1 利用操作指针组的包含
10.2.5 实现多态功能 288
12.4.2 C语言实现多态功能的总结 292
12.5 对C语言实现基于对象
12.5 编程的思考 292
12.5.1 C语言基于对象编程的
10.2.5 特性 292
12.5.2 C语言基于对象编程中接口、
10.2.5 实现和调用者的关系 293
第五部分 在嵌入式
环境下的C语言编程
第13章 C语言程序的内存布局 295
13.1 C语言程序的存储区域 295
13.2 C语言程序的段 297
13.2.1 段的分类 297
13.2.2 程序中段的使用 298
13.3 可执行程序的连接 301
13.3.1 可执行程序的组成 301
13.3.2 各个目标文件的关系 303
13.3.3 连接错误示例 304
13.4 C语言程序的运行 309
13.4.1 RAM调试运行 311
13.4.2 固化程序的XIP运行 312
13.4.3 固化程序的加载运行 313
13.4.4 C语言程序的运行总结 315
第14章 嵌入式C语言常用语法 317
14.1 内存指针操作 317
14.1.1 内存操作的意义 317
14.1.2 使用指针操作内存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系统指针的实际
10.2.5 应用 325
14.2 位操作 327
14.2.1 位操作的意义 327
14.2.2 位操作的语法 328
14.3 大小端与对齐问题 330
14.3.1 大小端问题 331
14.3.2 内存对齐问题 335
14.3.3 结构体成员的对齐问题 338
14.4 程序的跳转 344
14.4.1 嵌入式系统程序跳转的
10.2.5 类型 344
14.4.2 C语言中实现程序的跳转 345
第15章 嵌入式C语言编程的技巧 348
15.1 程序的优化技巧 348
15.1.1 循环缓冲区 348
15.1.2 查表法 350
15.1.3 针对循环执行效率的
10.2.5 优化 353
15.2 关于小数运算 355
15.3 函数参数和返回值的传递 357
15.4 变量的初始化技巧 360
15.4.1 数组的初始化 360
15.4.2 结构体的初始化 362
15.4.3 变量的初始化总结 362
15.5 程序的调试和宏使用的技巧 363
15.5.1 打印文件、函数和程序行 363
15.5.2 #:字符串化操作符 364
15.5.3 ##:连接操作符 366
15.5.4 调试宏的第一种定义方式 367
15.5.5 调试宏的第二种定义方式 368
15.5.6 对调试语句进行分级审查 369
15.5.7 条件编译调试语句 370
15.5.8 使用do…while的宏定义 372
15.6 代码剖析 373
参考文献 378
B. 瀛︾紪绋嬶细娉ㄩ吨镐濇兂鍜屽疄璺
瀛︾紪绋嬶纴璇瑷涓嶆槸鍏抽敭锛岀湡姝i吨瑕佺殑鏄鑳屽悗镄勬濇兂銆傚氨镀忔﹀姛锛屾嫑寮忎笉鏄链閲嶈佺殑锛屽唴锷熸墠鏄镙稿绩銆傛湰鏂囧皢涓轰綘浠嬬粛瀛︿範缂栫▼镄勫叧阌镣癸纴甯锷╀綘镟村ソ鍦版帉鎻$紪绋嬫妧鑳姐
📚镓扑笅鍧氩疄镄勭悊璁哄熀纭
瀛︿範缂栫▼闇瑕佹墦涓嫔潥瀹炵殑鐞呜哄熀纭锛屽傚井链哄师鐞嗐佹暟鎹缁撴瀯绛夈傝繖浜涘熀纭鐭ヨ瘑灏嗕负浣犲悗缁镄勭紪绋嬩箣璺鎻愪緵链夊姏镄勬敮鎾戙
🤔瀛︿範缂栫▼镐濇兂
瀛︿範缂栫▼镐濇兂鏄鍏抽敭銆备互闱㈠悜瀵硅薄涓轰緥锛屽畠鏄涓绉嶅己澶х殑缂栫▼镐濇兂锛岃岃捐℃ā寮忓垯鏄鍏跺疄闄呭簲鐢ㄧ殑浣撶幇銆傚埆鍙灞闄愪簬涔︽湰锛岀粨钖堢绣涓婄殑瑙嗛戞暀绋嫔︿範鏁堟灉镟翠匠銆
🎥缁揿悎瑙嗛戞暀绋嫔︿範
鎺ㄨ崘浣犺块梾Microsoft Webcasts镄凛#闱㈠悜瀵硅薄璁捐℃ā寮忕旱妯璋堢郴鍒楄剧▼锛屼粠C#璇瑷鍑哄彂锛屾繁鍏ョ悊瑙g紪绋嬫濇兂銆
👨💻阃氲繃瀹炶返鎻愬崌缂栫▼鑳藉姏
瀹炶返鏄妫楠岀湡鐞嗙殑鍞涓镙囧嗳銆傞氲繃瀹炶返锛屼綘灏嗘洿濂藉湴鎺屾彙镓瀛︾煡璇嗭纴骞跺皢鍏跺簲鐢ㄤ簬瀹为檯椤圭洰涓銆
📝鍙傚姞锲藉惰蒋钥
濡傛灉浣犳兂钥冭瘉锛岄偅涔埚浗瀹惰蒋钥冩槸涓涓涓嶉敊镄勯夋嫨銆备綘鍙浠ュ墠寰镓鍦ㄧ渷镄勪汉浜嬭冭瘯涓蹇幂绣绔欐姤钖嶅弬锷犺冭瘯銆傝冭瘯鍒嗕负鍒濄佷腑銆侀珮涓変釜绾у埆锛屼腑绾у寘𨰾杞浠惰捐″笀銆佽蒋浠舵祴璇曞伐绋嫔笀銆佹暟鎹搴撶郴缁熷伐绋嫔笀銆佺绣缁滃伐绋嫔笀绛夎亴浣嶏纴楂樼骇鍒欐湁绯荤粺鍒嗘瀽甯堢瓑镵屼綅銆
🎯鏄庣‘镊宸辩殑鏂瑰悜
鍦ㄥ︿範杩囩▼涓锛屼綘鍙浠ラ愭笎鏄庣‘镊宸辩殑鏂瑰悜锛屾繁鍏ョ悊瑙i溃钖戝硅薄銆佹暟鎹搴撱佹暟鎹缁撴瀯绛夋牳蹇幂煡璇嗐
C. 请问下面这个实例用C语言程序怎样编程
#include <stdio.h>
int main() {
int score;
char grade;
printf("请输入成绩:");
scanf("%d", &score);
switch (score / 10) {
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
default:
grade = 'E'坦孙;
break;
}
printf("成绩等级为:%c\n", grade);
return 0;
}
在程序中,先定义了一个整型变量 score 和一个字符型变量 grade,用来让祥链分别存储输入的成绩和计算出的等级。然后,使用 scanf 函数从键盘上读入成绩,使用除法运算将成绩转化为 1~10 的整数,并将其作为 switch 语句的选择器。根据成绩范围,使用不同的 case 标号计算出等级,并将其赋值给 grade 变量。最后,使用 printf 函数输出等级。
注意,在 switch 语句中,可以宴银使用多个 case 标号来表示同一种情况,这样可以简化代码。例如,case 10 和 case 9 都表示成绩在 90 分以上的情况,因此可以将它们写在一起。另外,在 switch 语句中,必须使用 break 语句来结束每个 case 分支,否则程序将继续执行后面的 case 分支。
D. 鍏涓狢璇瑷椤圭洰姣曚笟钖庝粠灏忕槠鍒板ぇ鐗
C璇瑷8涓椤圭洰瀹炶返鐩村斾富棰
涓銆佸熀浜庣栌搴AI镄勮阔宠瘑鍒
闅惧害绯绘暟:
浠g爜閲:400琛
瀹炵幇锷熻兘:璇阔冲綍鍏ャ佽阔宠浆鏂囧瓧
阃傚悎浜虹兢:链塁++銆丵T銆佺绣缁滃熀纭銆
娑夊强鎶链:QT銆佷俊鍙蜂笌妲姐丠TTP銆佺栌搴AI寮鏀惧钩鍙般
浜屻侀氲绠$悊绯荤粺
闅惧害绯绘暟:
浠g爜閲:400琛
瀹炵幇锷熻兘:阃氲褰曚俊鎭镄勫炲垹鏀规煡镎崭綔銆傞傚悎浜虹兢: C璇瑷镄勫埯瀛﹁咃纴闅惧害杈冨皬锛屼笉钖堥傚啓鍦ㄧ亩铡嗕笂銆傜患钖埚簲鐢ㄦ暟缁勚佹寚阍堬纴鍙浠ラ敾镣肩紪绋嬮昏緫镐濈淮锛岀Н绱浠g爜閲忋
娑夊强鎶链:鏁扮粍銆佹寚阍堛佺粨鏋勪綋銆佸嚱鏁般
涓夈佸仠杞︾$悊绯荤粺
闅惧害绯绘暟:
浠g爜閲:800琛
瀹炵幇锷熻兘:锅滆溅銆佹垒杞︺佺即璐广佺诲紑銆佽矾绾胯勫垝銆
阃傚悎浜虹兢:链塁璇瑷鍜岄摼琛ㄣ佹爤銆侀槦鍒楀熀纭銆
娑夊强鎶链:鎸囬拡銆佹暟缁勚侀摼琛ㄣ侀槦鍒椼佸箍搴︿紭鍏堟悳绱銆
锲涖佸熀鍗幂栌搴AI镄勫浘镀忚瘑鍒
闅惧害绯绘暟:
浠g爜閲:800琛
瀹炵幇锷熻兘:锅滆溅銆佹垒杞︺佺即璐广佺诲紑銆佽矾绾胯勫垝銆
阃傚悎浜虹兢:链塁璇瑷鍜岄摼琛ㄣ佹爤銆侀槦鍒楀熀纭銆
娑夊强鎶链:鎸囬拡銆佹暟缁勚侀摼琛ㄣ侀槦鍒椼佸箍搴︿紭鍏堟悳绱銆
浜斻佹櫤鑳绗iFi鎽勫儚澶
闅惧害绯绘暟
浠g爜閲:1500琛
璇瑷: C璇瑷
瀹炵幇锷熻兘:锲惧儚鏁版嵁閲囬泦銆丄PP鏄剧ず銆佽繙绋嬫带鍒堕傚悎浜虹兢:链塁璇瑷銆丩inux銆佺绣缁滃熀纭锛屽睘浜庣患钖堟ч”鐩锛岄傚悎链夋剰浠庝簨宓屽叆寮忓紑鍙戠殑钖屽︺
纭浠跺钩鍙:NanoPi Duo2
娑夊强鎶链: mjpg_stremer銆乯son銆乀CP銆乁DP銆丵T銆乪poll
鍏銆佹櫤鑳介煶绠
闅惧害绯绘暟:
浠g爜閲:3000琛
瀹炵幇锷熻兘:鐢卞祵鍏ュ纺绔銆佸悗鍙颁簯链嶅姟鍣ㄥ拰APP缁勬垚锛屽疄鐜颁简鍒囨瓕銆佹殏锅溿佺户缁銆侀煶閲忚皟鑺伞丄PP杩灭▼鎺у埗銆佽阔虫带鍒躲
阃傚悎浜虹兢:链塁/C++/Linux锘虹锛岀患钖堟ф瘆杈冨己锛屽彲浠
浣滀负椤圭洰鎻愬崌銆佹瘯璁俱佸氨涓氱瓑銆
纭浠跺钩鍙;mini2440
娑夊强鎶链: C/C++銆乴ibevnet銆乯son銆佽繘绋嬨乀CP銆丵T
涓冦丱penCV鏅鸿兘灏忚溅
闅惧害绯绘暟:
浠g爜閲:1000琛
瀹炵幇锷熻兘:杞﹁缔鎺у埗銆佸畾阃熷贰鑸銆佹祴璺濄佽溅阆撴娴嬩互鍙
杞﹂亾淇濇寔銆
阃傚悎浜虹兢:链塁璇瑷鍜屽崟鐗囨満寮鍙戝熀纭銆
纭浠跺钩鍙:51鍗旷墖链哄拰ARMCortexA寮鍙戝椾欢
娑夊强鎶链: C璇瑷銆51鍗旷墖链恒佸浘镀忓勭悊銆佷覆鍙i氢俊銆
鍏銆佽繙绋嬮氢俊杞浠
闅惧害绯绘暟: 浠g爜閲:3000琛
瀹炵幇锷熻兘:娉ㄥ唽銆佺橱褰曘佹坊锷犲ソ鍙嬨佽亰澶┿佸缓缇ゃ佹枃浠朵紶杈撱
阃傚悎浜虹兢:链塁++銆佺绣缁滃熀纭銆
骞冲彴:瀹㈡埛绔疻indows銆佹湇锷″櫒Linux銆
娑夊强鎶链: C++銆乴ibevent銆丵T銆佸氱嚎绋嬨丮ySQL銆佹枃浠
E. c语言实训心得3000字
你可以这样写:
下面是我的实训心得:
一、明确学习目的
学习编程对大多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
二、打好基础
学编程要具备一定的基础,总结之有以下几方面:
1、数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
2、逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。
三、注意理解一些重要概念
一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针这些语法、结构的应用例子,做到举一反三,触类旁通。
四、掌握编程思想
学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。关键是学一种思想,有了思想,那么我们就可以触类旁通。
五、多实践、多交流
掌握编程思想必须在编程实际工作中去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。
六、养成良好的编程习惯
编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习惯。编程风格的好坏很大程度影响程序质量。良好的编程风格可以使程序结构清晰合理,且使程序代码便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。
七、上网学编程
在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载。
八、加强计算机理论知识的再学习
学编程是符合“理论→实践→再理论→再实践”的一个认识过程。一开始要具有一定的计算机理论基础知识,包括编程所需的数学基础知识,具备了入门的条件,就可以开始编程的实践,从实践中可以发现问题需要加强计算机理论知识的再学习。程序人人皆可编,但当你发现编到一定程度很难再提高的时候,就要回头来学习一些计算机科学和数学基础理论。学过之后,很多以前遇到的问题都会迎刃而解,使人有豁然开朗之感。因此在学习编程的过程中要不断地针对应用中的困惑和问题深入学习数据结构、算法、计算机原理、编译原理、操作系统原理、软件工程等计算机科学的理论基础和数理逻辑、代数系统、图论、离散数学等数学理论基础知识。这样经过不断的学习,再努力地实践,编程水平一定会不断提高到一个新高度。