C 語言最早的原型是 ALGOL 60 1963 年,劍橋大學(xué)將其發(fā)展成為 CPL(Combined Programing Language)。1967 年,劍橋大學(xué)的 Matin Richards 對(duì) CPL 語言進(jìn)行了簡化,產(chǎn)生了 BCPL 語言。
如果問C語言中最重要、威力最大的概念是什么,答案必將是指針!
排序是數(shù)據(jù)處理中經(jīng)常運(yùn)用的一種重要運(yùn)算,排序的功能是將一個(gè)數(shù)據(jù)元素(記錄)的任意序列,重新排列成一個(gè)按照一個(gè)規(guī)則有序的序列。
回調(diào)函數(shù),光聽名字就比普通函數(shù)要高大上一些,那到底什么是回調(diào)函數(shù)呢?
很多編程初學(xué)者至今還在給我寫信請(qǐng)教,問我該學(xué)習(xí)什么程序語言,怎么學(xué)習(xí)。今天我有動(dòng)力了,想來統(tǒng)一回答一下這個(gè)擱置已久的“初級(jí)問題”。類似的話題貌似曾經(jīng)寫過,然而現(xiàn)在我想把它重新寫一遍。
在C語言中,按照生命周期來分,變量只有兩類:靜態(tài)變量和動(dòng)態(tài)變量。
6174數(shù)學(xué)黑洞,即 卡普雷卡爾(Kaprekar)常數(shù)。
對(duì)一個(gè)字節(jié)數(shù)據(jù),逐個(gè)交換其高低位,例如 11010001,經(jīng)過0-7,1-6,2-5,3-4對(duì)應(yīng)位的交換,變成 10001011 。對(duì)于該問題,我們最先想到的是對(duì)原字節(jié)通過移位操作來逐位處理,使用另一個(gè)變量來存儲(chǔ)交換后的結(jié)果。這種解決方案處理起來思路清晰,編寫代碼應(yīng)該不難。
我們鼓勵(lì)在編程時(shí)應(yīng)有清晰的哲學(xué)思維,而不是給予硬性規(guī)則。我并不希望你們能認(rèn)可所有的東西,因?yàn)樗鼈冎皇怯^點(diǎn),觀點(diǎn)會(huì)隨著時(shí)間的變化而變化??墒?,如果不是直到現(xiàn)在把它們寫在紙上,長久以來這些基于許多經(jīng)驗(yàn)的觀點(diǎn)一直積累在我的頭腦中。因此希望這些觀點(diǎn)能幫助你們,了解如何規(guī)劃一個(gè)程序的細(xì)節(jié)。
在嵌入式開發(fā)中,宏定義非常強(qiáng)大也非常便捷,如果正確使用可以讓你的工作事半功倍。然而,在很多的C程序中,你可能會(huì)看到不是那么直接的比較特殊一點(diǎn)的宏定義。
為確保消息數(shù)據(jù)的完整性,除了驗(yàn)證消息CRC之外,建議實(shí)現(xiàn)檢查串行端口(UART)成幀錯(cuò)誤的代碼。如果接收消息中的CRC與接收設(shè)備計(jì)算的CRC不匹配,則應(yīng)忽略該消息。下面的C語言代碼片段顯示了如何使用逐位移位和異或運(yùn)算來計(jì)算Modbus消息CRC。使用消息幀中的每個(gè)字節(jié)計(jì)算CRC,除了包含CRC本身的最后兩個(gè)字節(jié)。
所謂的數(shù)組越界,簡單地講就是指數(shù)組下標(biāo)變量的取值超過了初始定義時(shí)的大小,導(dǎo)致對(duì)數(shù)組元素的訪問出現(xiàn)在數(shù)組的范圍之外,這類錯(cuò)誤也是 C 語言程序中最常見的錯(cuò)誤之一。
本文介紹了字符串轉(zhuǎn)十六進(jìn)制、十六進(jìn)制轉(zhuǎn)字符串、字符串轉(zhuǎn)十進(jìn)制、十進(jìn)制轉(zhuǎn)字符串等知識(shí)點(diǎn)。
謝賓斯基三角形是一個(gè)有意思的圖形,(英語:Sierpinski triangle)是一種分形,由波蘭數(shù)學(xué)家謝爾賓斯基在1915年提出,它是一種典型的自相似集。
有些數(shù)據(jù)在存儲(chǔ)時(shí)并不需要占用一個(gè)完整的字節(jié),只需要占用一個(gè)或幾個(gè)二進(jìn)制位即可。例如開關(guān)只有通電和斷電兩種狀態(tài),用 0 和 1 表示足以,也就是用一個(gè)二進(jìn)位。正是基于這種考慮,C語言又提供了一種叫做位域的數(shù)據(jù)結(jié)構(gòu)。
一位初學(xué)單片機(jī)的小伙伴讓我推薦C語言書籍,因?yàn)镃語言基礎(chǔ)比較差,想把C語言重新學(xué)一遍,再去學(xué)單片機(jī),我以前剛學(xué)單片機(jī)的時(shí)候也有這樣子的想法。其實(shí)C語言是可以邊學(xué)單片機(jī)邊學(xué)的,學(xué)單片機(jī)的一些例程中,遇到不懂的C語言知識(shí),再去查相關(guān)的知識(shí)點(diǎn),這樣印象才會(huì)深刻些。
前言 在計(jì)算機(jī)軟件領(lǐng)域,做出過重大貢獻(xiàn)的神人很多,在這閃耀的明星中,最為閃耀的莫過于「Linus ?Torvalds和Dennis Ritchie」。 那么,這兩位誰的貢獻(xiàn)更大呢?
C 與 C++ 的真正區(qū)別在哪里?
寫好C語言,漂亮的宏定義很重要,使用宏定義可以防止出錯(cuò),提高可移植性,可讀性,方便性等等。
這里利用一個(gè)實(shí)際發(fā)生的例子,針對(duì)初級(jí)工程師經(jīng)常犯的一個(gè)小錯(cuò)誤,或者經(jīng)常要走的一個(gè)彎路,做了針對(duì)性的糾正。希望可以幫到大家,文筆不好文章中有敘述不清的地方大家多多指教。