章節(jié)
- 熟練使用 Vim 編輯器
- Vim 編輯器核心理念、使用竅門
- Vim 處理模式
- Vim 常用命令
- Vim 基礎(chǔ)命令
- C語言基礎(chǔ)回顧
- C語言基礎(chǔ)回顧-helloworld
- 常用基本類型
- C語言的常量與變量
- 常量與變量
- C語言內(nèi)存管理
- C語言指針 與 數(shù)組
- C語言指針
- 數(shù)組
- C 指針程序demo->testpoint.c
- C 自定義類型
- 結(jié)構(gòu)體
- 枚舉類型
- C語言文件操作
- 文件操作流程
- C語言操作文件實操->testfile.c
- Linux/Mac C語言編譯器
- 常用 gcc/clang 命令參數(shù)
- 感想
- 關(guān)于技術(shù)提升
- 關(guān)于發(fā)展
1.熟練使用 Vim 編輯器
1.1 Vim 編輯器核心理念、使用竅門
核心理念: 雙手盡量與鍵盤接觸棚壁,這樣我們的思路才不會被打斷,集中精力寫代碼杯矩,思路不被打斷。
使用竅門: 勤學多練
1.2 Vim 處理模式
命令行模式
拷貝袖外、刪除史隆、粘貼等,通過 i/a 等鍵切換到編輯模式
編輯模式
編輯字符曼验,通過Esc鍵進行切換
1.3 Vim 常用命令
創(chuàng)建文件
vim filename
保存文件
:w
關(guān)閉文件
:q
切換vim模式為編輯模式
i
退出并保存
:wq
不保存
:q!
1.4 Vim 基礎(chǔ)命令
- 拷貝/粘貼一行 yy/p
- 刪除一行 dd
- 拷貝/粘貼 一個詞 yw/p
- 刪除一個次 dw
- 光標移動-左下上右 h / j / k / l ,mac os 下直接按 上下左右鍵
- 跳到文件頭 gg
- 跳到文件尾 G
- 移動到行首 ^
- 移動到行尾 $
- 按單詞移動:向前 w/ 2w/ 泌射,向后 b/ 2b
命令模式下編輯的內(nèi)容 存儲在緩沖區(qū)中,并沒有寫入到文件當中
2蚣驼、C語言基礎(chǔ)回顧
2.1 C語言基礎(chǔ)回顧-helloworld
編寫helloworld.c源代碼
//import 庫函數(shù)
#include <stdio.h>
//程序運行主入口 argc 輸入一些參數(shù)魄幕、字符數(shù)組每一項都是一個命令參數(shù),這個是行參
int main(int argc,char *argv[]){
printf("hello world!\n");
return 0;
}
注意:還給老師的c語言還是拿起來吧颖杏,重新站到鄙視鏈的頂端纯陨,嘿嘿。
編譯 helloworld.c
clang -g -o helloworld helloworld.c
-g 代表編譯時輸出debug 信息留储、
-o 代表源代碼編譯完成之后輸出的文件翼抠、
運行 helloworld.c
BOFENGLIU-MB0:learn20181024 mark$ ./helloworld
運行結(jié)果
2.2 常用基本類型
- short 占2個字節(jié)
- int 占4個字節(jié)
- long 占4個字節(jié)
- float 占4個字節(jié)
- double 占 4 個字節(jié)
- char 占1個字節(jié)
- void
擴充 helloworld.c 源代碼
//import 庫函數(shù)
#include <stdio.h>
//程序運行主入口 argc 輸入一些參數(shù)、字符數(shù)組每一項都是一個命令參數(shù)获讳,這個是行參
int main(int argc,char *argv[]){
int a = 100;
double b = 5.8;
char c = 'Y';
printf("a=%d,b=%f,c=%c\n",a,b,c);
printf("hello world!\n");
return 0;
}
運行結(jié)果
3阴颖、C語言的常量與變量
3.1 常量與變量
int a = 0;//變量,可以再賦值
const int len = 256; //常量定義
3.2 c語言內(nèi)存管理
4丐膝、c語言指針 與 數(shù)組
4.1 c語言指針
指針是c語言的靈魂量愧、所謂指針就是 內(nèi)存地址 void* 、char*
拿到指針就可以操作(獲取帅矗、更改)指針指向的內(nèi)存地址的value偎肃、
即 地址 就是 指針,void* 表示任意類型指針
實用比較多的是一級指針浑此。
4.2 數(shù)組
數(shù)組是內(nèi)存當中連續(xù)的同一類型數(shù)據(jù)的一塊空間累颂,char[2] 根據(jù)數(shù)組的序號找到目標索引數(shù)據(jù)。int arr[10] 根據(jù)數(shù)組的一個數(shù)據(jù)可以獲取到數(shù)組當前元素的前一個凛俱、后一個元素紊馏。
4.3 c 指針程序demo->testpoint.c
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char* argv[]){
//1.聲明指針變量a,個人更傾向于使用 [類型*] 變量名蒲犬,而不擅長使用[類型] *變量名朱监,前者更加直觀,含義即 指向某類型變量的指針
int* a;
int* b;
a = (int*)malloc(sizeof(int));//在堆內(nèi)存中分配int類型數(shù)據(jù)占內(nèi)存大小的空間原叮,并將內(nèi)存空間首地址賦給a
b = (int*)malloc(sizeof(int));//同上
*a = 1;
*b = 2;
printf("addr of a: %p,a saved addr: %p,a points value %d\n",&a,a,*a);//指針的指針赌朋,即存放指針的空間地址,指針變量存儲的地址值凰狞,指針指向的內(nèi)存區(qū)域存儲的vlaue
printf("addr of b: %p,b saved addr: %p,b points value %d\n",&b,b,*b);//同上
return 0;
}
運行結(jié)果
指向數(shù)組變量的指針
5.c 自定義類型
定義復雜類型去覆蓋原始類型不能實現(xiàn)的需求,即自定義類型
5.1 結(jié)構(gòu)體
struct st {
int a;
int b;
}
在函數(shù)體里使用結(jié)構(gòu)體->teststruct.c
#include <stdio.h>
struct user {
int sex;
int age;
};
int main(int argc,char* argv[]) {
struct user user;
user.sex = 0;
user.age = 10;
printf("st user content is :%d,%d\n",user.sex,user.age);
return 0;
}
運行結(jié)果
5.2 枚舉類型
enum color_em {
red_color = 0,
green_color, //自動 + 1 為 1
yellow_color,//自動 + 1 為 2
black_color, //自動 + 1 為 3
};
在函數(shù)體里使用枚舉
#include <stdio.h>
enum color_em {
red_color = 0,
green_color, //自動 + 1 為 1
yellow_color,//自動 + 1 為 2
black_color, //自動 + 1 為 3
};
int main(int argc,char* argv[]){
enum color_em colorEm;
//把red_color賦值給 枚舉類型(enum)
colorEm = black_color;
printf("The color is: %d\n",colorEm);
return 0;
}
運行結(jié)果
注意:struct 與 enum 在定義之時的語法差異沛慢,struct 各 filed ; 隔開赡若、enum 各filed , 隔開。
6.文件操作
6.1 文件操作流程
- 文件類型 FILE* file = 使用指針指向文件
- 打開文件 FILE* fopen(path,mode) = fopen函數(shù)調(diào)用返回文件句柄
- 關(guān)閉文件 fclose(FILE*) = 銷毀文件句柄团甲,釋放資源
6.2 c語言操作文件實操->testfile.c
#include<stdio.h>
int main(int argc,char* argv[]){
//1.聲明文件句柄
FILE* file;
//2.聲明空buff,用來讀取文件中的內(nèi)容
char buf[1024] = {0, };
//3.內(nèi)容寫入文件的方式為末尾追加逾冬,則游標是處于文件末尾位置的
file = fopen("hello.txt","a+");
//4.["寫入的文本內(nèi)容",一個字符占用n個字節(jié),被寫入文本的字符數(shù),文本寫入的file目的地]
fwrite("hello,bofeng!",1,13,file);
//5.將文件末尾游標復位到文件最開頭的位置,否則 將文件中內(nèi)容讀取到空buf時躺苦,buf中數(shù)據(jù)為空
rewind(file);
//6.將file中內(nèi)容讀取到buf 中身腻,1表示一個字符占1個字節(jié),13表示讀取從游標開始的n個字符匹厘,因程序已經(jīng)運行過若干遍嘀趟,所以可以讀取 n*13個字符
fread(buf,1,26,file);
//7.關(guān)閉文件,釋放資源很重要,要知道在c/c++中充斥著各種手動close resource 的操作
fclose(file);
//8.輸出buf中內(nèi)容
printf("The file content is: %s\n",buf);
return 0;
}
運行結(jié)果
7.Linux/Mac c語言編譯器
- MacOS 操作系統(tǒng)上的c語言編譯器是CLANG;
- Linux 操作系統(tǒng)上的c語言編譯器是GCC愈诚。
7.1 常用 gcc/clang 命令參數(shù)如下所示:
8.感想
今天的思考有兩點:
關(guān)于技術(shù)提升
如果有幸我的文章你讀到了這里她按,你或許會有疑問,為什么這么簡單的問題都要記錄炕柔?很簡單:不積跬步無以至千里酌泰。
關(guān)于發(fā)展
以發(fā)展的眼光看身邊的人、身邊的事匕累、摒棄個人經(jīng)驗主義陵刹、甚至是群體經(jīng)驗主義。說個有意思的故事:郭沫若是家喻戶曉的作家欢嘿,可你是否知道小時候的他字寫的非常潦草衰琐、完全看不出有以后會成為作家的跡象。身邊長輩都說這孩子以后肯定不是握筆的料炼蹦〉舛可事實是他確實成為了作家,并且主編了《中國史稿》和《甲骨文合集》
所以個人經(jīng)驗主義在某些方面并不可信框弛、甚至是群體經(jīng)驗主義也不太可信,比如說三歲看小捕捂、七歲看老瑟枫。
關(guān)于公眾號
精進!
道友們指攒,你們好慷妙。早前個人就有開設(shè)公眾號的念想,今年10月終于開搞了允悦。
我的個人的 訂閱號--T客來了膝擂;
平時自己會總結(jié)一些后端開發(fā)相關(guān)的技術(shù);
最近也迷上了音視頻開發(fā)相關(guān)技術(shù);
技術(shù)分享包括:
- 1.FFmpeg 工程實戰(zhàn)架馋、
- 2.數(shù)據(jù)庫 MySQL原理與實戰(zhàn)狞山、
- 3.Redis中間件、
- 4.Nginx叉寂、Java并發(fā)編程萍启、
- 5.Go語言方面的技術(shù)知識與實操;
-
6.有趣味的心理學
T客來了
微信掃碼就可以添加哦~
注意:此視頻整理自慕課網(wǎng)實戰(zhàn)課程-FFmpeg音視頻核心技術(shù)精講與實戰(zhàn)。