国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C語言該怎么進(jìn)階?你學(xué)會了嗎?

開發(fā) 前端
初學(xué)者在這段代碼里出的錯誤,基本都是忘了打結(jié)尾的分號,或者使用了中文字符而導(dǎo)致的。學(xué)會了這段代碼之后,C語言就可以算入門了。

?C語言的入門還是很簡單的:

#include<stdio.h>
int main()
{
printf("hello world\n");
return 0;
}

把這段代碼輸入文本編輯器vim,保存成hello.c文件:文件里的符號全是英文字符,別把分號打成中文字符。

然后用gcc編譯器它,命令為:gcc hello.c

獲得一個可運行的a.out文件,在命令行里直接運行它:./a.out

可以看到打印的hello world字符串。

如果gcc編譯出來的a.out文件沒有自動加執(zhí)行權(quán)限,可以自己加上,命令為:

chmod +x a.out

初學(xué)者在這段代碼里出的錯誤,基本都是忘了打結(jié)尾的分號,或者使用了中文字符而導(dǎo)致的。

學(xué)會了這段代碼之后,C語言就可以算入門了。

這段代碼雖然很短,但涉及到了頭文件、宏、函數(shù)、字符串/數(shù)字 常量、return 語句,涵蓋了C語言50%的常用語法吧?

剩下的語法,就是一些運算符、if else、while for、switch case等語句類型。

1.C語言入門階段的最后一關(guān),是指針。

指針,是一個表示變量的內(nèi)存地址的無符號整數(shù),位數(shù)跟CPU的字長相同。

64位機(jī)上,指針是8個字節(jié)。

老式的32位機(jī)上,指針是4個字節(jié)。

指針的字節(jié)數(shù),跟long類型的整數(shù)一樣。

int a[10];
int * p = a;

數(shù)組的指針,指的是數(shù)組的“首地址”:數(shù)組的第0號元素的內(nèi)存地址。

C語言從0開始編號,數(shù)組元素的內(nèi)存地址與它的編號一一對應(yīng):

&a[i] == (unsigned long)a + i * sizeof(a[0]);

所以,指針是一個unsigned long型的(無符號)整數(shù)。

指針變量,是一個保存某種類型的數(shù)據(jù)的內(nèi)存地址的變量。

指針的類型,是它指向的數(shù)據(jù)的類型。

指針的++和--運算,一次跳過(它指向的)1個元素的字節(jié)數(shù):int型指針++和--的變化是sizeof(int)個字節(jié)。

大多數(shù)系統(tǒng)上,sizeof(int) == 4.

2.C語言的文件讀寫,是關(guān)系到操作系統(tǒng)的。

C語言的文件函數(shù)

上圖是C語言的文件函數(shù),下圖是Linux的文件函數(shù)。

C語言標(biāo)準(zhǔn)庫的文件函數(shù),最終也是使用OS的系統(tǒng)調(diào)用(其他語言的標(biāo)準(zhǔn)庫也一樣)。

操作系統(tǒng)為了把功能提供給應(yīng)用層,都有一套API:其中的重點就是文件和網(wǎng)絡(luò)編程的API。

API這個詞來自windows,Linux上一般叫系統(tǒng)調(diào)用(syscall)。

Linux的文件函數(shù)

windows有它自己的應(yīng)用編程框架(C#,VS),windows上的C語言都是通過VC++支持的:VC++,VS里的C++?

現(xiàn)在,C語言的應(yīng)用編程,主要還是在Linux上。

Linux的系統(tǒng)調(diào)用,是C程序員在學(xué)會了基礎(chǔ)內(nèi)容之后,下一個階段要熟悉的。

Linux繼承的是Unix,它的API和Unix的區(qū)別不大:

要熟悉Linux系統(tǒng),最好的參考資料還是那本老書:Unix環(huán)境高級編程?

這本書的作者理查德-史蒂文斯1999年就過世了,但他的書依然是最好的Linux編程書。

當(dāng)然,最主要的參考資料還是Linux的man手冊:在命令行里輸入man open,就可以打開open()函數(shù)的手冊,里面有open()函數(shù)的詳細(xì)用法。

把man open換成man socket,就可以打開socket函數(shù)的手冊。

對同一個詞的介紹,在man手冊里可能有好幾頁:一個是對同名的Linux命令的介紹,另一個是對同名的Linux函數(shù)的介紹。

如果直接man open打開的不是函數(shù)介紹,可以用man 2 open,或者man 3 open等,通過數(shù)字去選頁數(shù)。

3.Linux的常用函數(shù):

1)open, close, read, write, fcntl

這些都是跟文件相關(guān)的函數(shù),作用跟函數(shù)名一樣。

fcntl:可以給文件加鎖,給socket設(shè)置非阻塞,用法比較復(fù)雜,可以參考man手冊。

2)lseek

移動文件指針到哪個位置,用法跟C庫的fseek一樣。

3)socket, bind, listen, accept, connect, send / recv, sendto / recvfrom

這些都是網(wǎng)絡(luò)編程的API,

socket:創(chuàng)建socket描述符,即網(wǎng)絡(luò)文件的句柄。

Linux上一切都是文件,socket也被看做一個文件。

bind:綁定socket到某個IP和端口號。

listen:讓socket進(jìn)入監(jiān)聽狀態(tài),用于服務(wù)器端監(jiān)聽某個IP和端口號。

accept:用于服務(wù)器端接受用戶的連接。

connect:用于客戶端連接到服務(wù)器。

send / recv:TCP協(xié)議的數(shù)據(jù)發(fā)送和接收。

sendto / recvfrom:UDP協(xié)議的數(shù)據(jù)發(fā)送和接收。

關(guān)閉socket,也是使用close()函數(shù)。

4)epoll_create, epoll_wait, epoll_ctl

Linux的epoll異步事件機(jī)制,

用于同時監(jiān)控多個socket網(wǎng)絡(luò)連接的讀寫狀態(tài),并進(jìn)行高并發(fā)的異步處理,它是網(wǎng)絡(luò)服務(wù)器的核心函數(shù)。

俄羅斯人寫的Nginx服務(wù)器,底層就是這3個函數(shù)。

nginx

5)setsockopt / getsockopt

設(shè)置或讀取網(wǎng)絡(luò)socket的狀態(tài),細(xì)節(jié)參考Linux man手冊。

getsockopt的其中一個應(yīng)用就是,它在異步連接時用于讀取連接的錯誤碼:相當(dāng)于connect()函數(shù)的返回值,只是這個過程在異步獲取的。

6)fork / execve

fork:以當(dāng)前進(jìn)程為藍(lán)本,創(chuàng)建一個子進(jìn)程。

execve:給當(dāng)前進(jìn)程加載一個新的可執(zhí)行程序,并替換它的用戶內(nèi)存空間。

在多進(jìn)程編程里,這2個是基本的函數(shù),但一般并不常用。

多進(jìn)程的網(wǎng)絡(luò)服務(wù)器Nginx,就是用fork()創(chuàng)建多個進(jìn)程的。

7)pthread_create

Linux上的pthread線程庫的函數(shù),用于在當(dāng)前進(jìn)程里創(chuàng)建一個線程。

pthread系列函數(shù),也是一組跟多線程編程的函數(shù)。

4.匯編語言

不會匯編語言的C程序員,不是好程序員?

實際上,想學(xué)明白C語言的話,還是要學(xué)匯編語言。

不會匯編語言的話,像全局變量、局部變量、動態(tài)庫、內(nèi)存、操作系統(tǒng)這些跟C語言有關(guān)的東西,也是很難學(xué)明白的。

C語言,既是個大號的匯編語言,又是個OS的應(yīng)用層膠水。

C語言,既離不了匯編語言,也離不了OS。

匯編語言就3個關(guān)鍵:內(nèi)存、寄存器、棧。

這條匯編代碼運行之前,內(nèi)存什么狀態(tài)、寄存器什么狀態(tài)、棧是什么狀態(tài)?

這條匯編代碼運行之后,內(nèi)存什么狀態(tài),寄存器什么狀態(tài),棧是什么狀態(tài)?

記住這6個狀態(tài),也就學(xué)會了匯編語言了。

5.算法

算法關(guān)系到數(shù)學(xué),算法導(dǎo)論是最好的參考資料。

當(dāng)然,數(shù)學(xué)越好,越容易學(xué)算法。

但OpenCV開源之后,大多數(shù)情況下,用不到自己寫算法?

跟圖像處理、視覺識別相關(guān)的算法,OpenCV幾乎都有。

算法工程師做的,更多是把這些基礎(chǔ)算法整合成一個特定場景的識別模型。

6.圖形界面

C語言可以選各種圖形界面庫,例如GTK,SDL,QT,etc.

想做界面程序的話,選一種自己看著順眼的圖形庫,然后熟悉一下它的C語言API就行了。

一般來說,圖形庫的API都是支持多種語言的,C語言也是其中之一。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-08-08 08:23:08

Spring日志?線程池

2024-05-09 08:14:09

系統(tǒng)設(shè)計語言多語言

2022-11-09 07:20:43

調(diào)用日志502報錯nginx

2024-01-19 08:25:38

死鎖Java通信

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2024-12-31 00:08:37

C#語言dynamic?

2024-09-10 10:34:48

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2024-01-02 12:05:26

Java并發(fā)編程

2022-07-08 09:27:48

CSSIFC模型

2023-10-10 11:04:11

Rust難點內(nèi)存

2024-07-31 08:39:45

Git命令暫存區(qū)

2024-08-06 09:47:57

2024-05-06 00:00:00

InnoDBView隔離

2023-12-12 08:02:10

2023-01-30 09:01:54

圖表指南圖形化

2024-12-23 10:06:45

C#深拷貝技術(shù)

2022-07-13 08:16:49

RocketMQRPC日志
點贊
收藏

51CTO技術(shù)棧公眾號

咪咪色在线视频| 国产午夜在线观看| 欧美顶级毛片在线播放| 欧美精品在欧美一区二区少妇| 亚洲欧洲一二三| 国产成人黄色| 一区二区福利视频| 国产区视频在线播放| 91一区二区三区在线观看| 国产啪精品视频| 欧美成人家庭影院| 91精品国产乱| 偷拍自拍在线| 中文字幕一区二区5566日韩| 小泽玛利亚av在线| 99这里有精品| 成人免费淫片aa视频免费| 超碰97久久| 在线精品视频视频中文字幕| 国产网友自拍视频导航网站在线观看| 日韩美女啊v在线免费观看| 只有这里有精品| 国产精品视频| y111111国产精品久久婷婷| 国产精品片aa在线观看| 伊人久久免费视频| 成年网站在线视频网站| 色88888久久久久久影院按摩| 色琪琪原网站亚洲香蕉| 国模大尺度一区二区三区| 精品欧美一区二区三区久久久| 日韩免费av| 日韩美女在线播放| 香蕉视频一区二区三区| 97婷婷大伊香蕉精品视频| 北条麻妃一区二区三区在线| 欧美激情亚洲另类| 99久久免费精品国产72精品九九| 日韩视频亚洲视频| 日韩亚洲国产免费| 北条麻妃一区二区三区中文字幕| 成人免费黄色| 中文字幕不卡在线视频极品| 123区在线| 亚洲欧美成人在线| 蜜桃精品在线| 欧美成人亚洲成人| 极品束缚调教一区二区网站 | 中文字幕黄色大片| 久久久夜夜夜| 国产专区一区二区| 亚洲一区二区三区免费在线观看| 久久精品第九区免费观看| 香蕉亚洲视频| 中文字幕一区综合| 波多野结衣中文字幕一区二区三区 | 精品久久人人做人人爰| 色呦呦在线观看视频| 欧美大片在线观看一区二区| 欧美寡妇性猛交xxx免费| 日韩精品免费在线播放| 密臀av在线播放| 丝袜亚洲欧美日韩综合| 91蜜桃臀久久一区二区| 国产xxx69麻豆国语对白| 久久综合成人| 美脚丝袜一区二区三区在线观看| 99精品国产一区二区青青牛奶| 日韩免费av电影| 成人午夜碰碰视频| 成年人视频网站| 欧美在线观看一区| 大菠萝精品导航| 久久精品国产一区二区电影| 久久动漫网址| 成人自拍爱视频| 久久99久久99| 免费看涩涩视频| 91国产免费看| 中文字幕乱码在线播放| 久久91精品国产91久久久| 精品在线播放| 六月婷婷久久| 94色蜜桃网一区二区三区| h网站在线播放| 精品国产一区二区精华| 日韩三级久久| 国产精品久久久久av福利动漫| 极品少妇一区二区| 777视频在线| 在线播放国产精品二区一二区四区| 欧美大片1688| 国产中文字幕亚洲| 国产成人aaa| 色天堂在线视频| 亚洲一区二区久久久| 久久麻豆精品| 欧日韩免费视频| 精品国产精品自拍| 日韩在线短视频| yy111111少妇影院日韩夜片 | 最新国产乱人伦偷精品免费网站| 四虎精品欧美一区二区免费| 国产精品成人在线观看| 羞羞网站在线看| 欧美中在线观看| 美国三级日本三级久久99| 日韩av电影免费| 亚洲人av在线影院| 欧美喷水视频| 九九九在线观看视频| 日韩欧美一区二区久久婷婷| 免费久久久久久久久| 一本一本a久久| 色综合网色综合| 日韩精品一区国产| 免费国产在线精品一区二区三区| 亚洲色图丝袜美腿| 日本美女一区| 久久99精品久久久久子伦| 亚洲人成小说网站色在线| 激情开心成人网| 欧美大陆一区二区| 图片区日韩欧美亚洲| 国产亚洲精彩久久| 欧美二级三级| 色哟哟一区二区在线观看| 欧洲亚洲一区二区三区| 中文字幕日韩精品无码内射| 欧美精品tushy高清| 女人av一区| 久久精品香蕉视频| 亚洲女人天堂视频| 视频在线观看一区二区三区| 日韩在线免费播放| 国产a∨精品一区二区三区不卡| 97se亚洲国产综合自在线不卡 | 成人国产精品色哟哟| 91麻豆产精品久久久久久| f2c人成在线观看免费视频| 99久久免费国| 性欧美疯狂xxxxbbbb| 国产在线播放精品| 成人一级片网站| 国产一区二区成人| 精品夜夜嗨av一区二区三区| 超碰最新在线| 狼狼综合久久久久综合网| 欧美性videosxxxxx| 欧美三级特黄| 番号集在线观看| av一区二区三区免费| 狠狠躁天天躁日日躁欧美| 国产99久久| 成人www视频网站免费观看| 欧美成人自拍视频| 久久久精品tv| 一区二区三区亚洲变态调教大结局 | 欧美床上激情在线观看| 国产在线精品一区在线观看麻豆| 日本aa在线| 亚洲图片欧洲图片日韩av| 欧美va亚洲va| 日本不卡一二三区黄网| 草草视频在线| 人人干视频在线| 欧美大片欧美激情性色a∨久久| 91丨porny丨首页| 欧美日韩国产一区二区在线观看| 国产成人无码一二三区视频| 久久久久久国产精品久久| 中文字幕一区二区三| 精品国产不卡| 91精品国产一区二区三密臀| 国产美女精品视频| 在线免费观看日本欧美| 亚洲第一区色| 91破解版在线观看| 成人网站免费观看入口| 久久久久一本一区二区青青蜜月| 在线免费黄色| 最新精品视频在线| 国产精品一区在线观看乱码| 小明成人免费视频一区| 五十路熟女丰满大屁股| 欧美激情久久久| 国产欧美一区二区在线| 免费欧美激情| 一本一道波多野毛片中文在线| 天天综合狠狠精品| 日韩一中文字幕| 亚洲综合精品自拍| 亚洲一区久久| 久久久久毛片免费观看| 小小水蜜桃在线观看| 欧洲精品久久| 久久躁狠狠躁夜夜爽| 欧美性xxxx极品hd欧美风情| 久久狠狠亚洲综合| 女同另类激情重口|