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、邏輯思維能力的培養學程序設計要有一定的邏輯思維能力,「邏思力」的培養要長時間的實踐鍛煉。要想成為一名優秀的程序員,最重要的是掌握編程思想。要做到這一點必須在反復的實踐、觀察、分析、比較、總結中逐漸地積累。因此在學習編程過程中,我們不必等到什麼都完全明白了才去動手實踐,只要明白了大概,就要敢於自己動手去體驗。誰都有第一次。有些問題只有通過實踐後才能明白,也只有實踐才能把老師和書上的知識變成自己的,高手都是這樣成材的。
三、注意理解一些重要概念
一本程序設計的書看到的無非就是變數、函數、條件語句、循環語句等概念,但要真正能進行編程應用,需要深入理解這些概念,在理解的基礎上應用,不要只簡單地學習語法、結構,而要吃透針這些語法、結構的應用例子,做到舉一反三,觸類旁通。
四、掌握編程思想
學習一門語言或開發工具,語法結構、功能調用是次要的,最主要是學習它的思想。關鍵是學一種思想,有了思想,那麼我們就可以觸類旁通。
五、多實踐、多交流
掌握編程思想必須在編程實際工作中去實踐和體會。編程起步階段要經常自己動手設計程序,具體設計時不要拘泥於固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實踐,幫助自己提高水平。親自動手進行程序設計是創造性思維應用的體現,也是培養邏輯思維的好方法。
六、養成良好的編程習慣
編程入門不難,但入門後不斷學習是十分重要的,相對來說較為漫長。在此期間要注意養成一些良好的編程習慣。編程風格的好壞很大程度影響程序質量。良好的編程風格可以使程序結構清晰合理,且使程序代碼便於維護。如代碼的縮進編排、變數命令規則的一致性、代碼的注釋等。
七、上網學編程
在網上可以學到很多不同的編程思想、方法、經驗和技巧,有大量的工具和作品及相關的輔導材料供下載。
八、加強計算機理論知識的再學習
學編程是符合「理論→實踐→再理論→再實踐」的一個認識過程。一開始要具有一定的計算機理論基礎知識,包括編程所需的數學基礎知識,具備了入門的條件,就可以開始編程的實踐,從實踐中可以發現問題需要加強計算機理論知識的再學習。程序人人皆可編,但當你發現編到一定程度很難再提高的時候,就要回頭來學習一些計算機科學和數學基礎理論。學過之後,很多以前遇到的問題都會迎刃而解,使人有豁然開朗之感。因此在學習編程的過程中要不斷地針對應用中的困惑和問題深入學習數據結構、演算法、計算機原理、編譯原理、操作系統原理、軟體工程等計算機科學的理論基礎和數理邏輯、代數系統、圖論、離散數學等數學理論基礎知識。這樣經過不斷的學習,再努力地實踐,編程水平一定會不斷提高到一個新高度。