memcpy函數(shù)的功能是用來作內(nèi)存搬運,就是將數(shù)據(jù)從一個數(shù)組賦值到另一個數(shù)組。它的實現(xiàn)很簡單:
初學C語言的時候,有一個小編程題我們應該都記得,就是變量互換。
我給大家出一道有意思的題目:如何快速得到一個字節(jié)的位逆序字節(jié)。比如0X33的位逆序字節(jié)是0XCC。
補碼是一個很基礎的概念,但是對于很多人來說,其實有些迷糊,這里對補碼進行一些通俗而深刻的講解。
另外,有時候優(yōu)先級還與C語言編譯器有關,同一個表達式在不同的平臺上,可能表達的意義是不同的。所以,為了代碼的可植移性、正確性以及可讀性,振南強烈建議多用一些()。
我們本希望循環(huán)5次,然后結束,但是實際情況是陷入了死循環(huán)。這種錯誤在實際開發(fā)中,還比較難發(fā)現(xiàn)。其原因在于i的類型,無符號整型是永遠不小于0的。我們需要將i的類型改為有符號型。
以上的例子可能有些雞肋,“一個if能搞定的事情,我為什么要用for?”,沒錯。我們這里主要是為了解釋for循環(huán)的靈活用法。深入理解了它的本質,有助于我們在實際開發(fā)中讓工作事半功倍,以及看懂別人的代碼。
直接操作數(shù)據(jù)?我們來舉個例子:取一個整型數(shù)的相反數(shù)。一般的實現(xiàn)方法是這樣的:
很多人不能很好的使用和處理浮點,其主要根源在于對它的表達與存儲方式不是很理解。最典型的例子就是經(jīng)常有人問我:“如何使用串口來發(fā)送一個浮點數(shù)?”
C語言中要表達一個字節(jié)數(shù)據(jù)序列(內(nèi)存中連續(xù)存儲的若干個字節(jié)),我們可以使用字節(jié)數(shù)組,如unsigned char array[10]={0,1,2,3,4,5,6,7,8,9}。其實字符串,本質上也是一個字節(jié)序列,但是通常情況下它所存儲的字節(jié)的值均為ASCII中可打印字符的碼值,如’A’、’ ‘、’|’等。那在字符串中是否也可以出現(xiàn)其它的值呢?這樣,我們就可以用字符串的形式來表達一個字節(jié)序列了。很多時候,它可能比字節(jié)數(shù)組要方便一些。字符串中的轉義符就是用來干這個的。請看如下程序:
字符串是C語言中最基礎的概念,也是最常被用到的。在嵌入式開發(fā)中,我們經(jīng)常要將一些字符串通過串口顯示到串口助手或調試終端上,作為信息提示,以便讓我們了解程序的運行情況;或者是將一些常量的值轉為字符串,來顯示到液晶等顯示設備上。
指針使得 C 語言能夠更高效地實現(xiàn)對計算機底層硬件的操作,而計算機硬件的操作很大程度上依賴地址,指針便提供了一種對地址操作的方法,在一定意義上,指針是c語言的精髓,所以一定要耐心看完。指針對于很多c語言初學者來說可能難以理解,一不小心可能被指針的指向關系繞進去,在這里就對指針做一些總結,寫一下自己的理解。