原创 linuxC調試代碼小技巧——利用條件編譯

對學過C語言的人來說,用註釋法來調試代碼,我想大家都不會太陌生。比如說,用“ // ”、“/* ...*/”先註釋一部分代碼,然後在逐一排查問題所在的位置。 也可以利用“註釋+printf()”手段來進行調試。但要注意了,有時候我們僅憑一

原创 要認識嵌入式Linux,看這一篇就夠了

對於剛接觸嵌入式Linux,還沒有整明白什麼是“嵌入式”的朋友們,下面的一篇文章關於什麼是嵌入式Linux,內容總結的非常透徹,分享給大家。 嵌入式Linux跟桌面Linux一樣,是一個操作系統。從單片機走過來的童鞋往往習慣於直接控

原创 C語言實現----順序表的基本操作(1)

什麼是順序表?所謂順序表,是指表中的元素一個接一個的在內存中連續存儲。說白了,就是數組。但與數組區別不同的是,數組一旦定義了,其長度就固定不變(因爲是靜態分配內存的,即是在棧內存分配的),而順序表卻不是這樣的,它是可以變的(因爲是動態分配

原创 malloc原理和內存碎片

當一個進程發生缺頁中斷的時候,進程會陷入內核態,執行以下操作: 1、檢查要訪問的虛擬地址是否合法  2、查找/分配一個物理頁  3、填充物理頁內容(讀取磁盤,或者直接置0,或者啥也不幹)  4、建立映射關係(虛擬地址到物理地址) 重新執

原创 關於malloc(0)的返回值問題--這兩天的總結與實踐篇

malloc() allocates size bytes and returns a pointer to the allocated memory. The memory is not cleared. If size is

原创 ARM架構與體系學習(二)——3級流水線

看到彙編中很多關於程序返回與中斷返回時處理地址都很特別,仔細想想原來是流水線作用的效果。所以,決定總結學習下ARM流水線。 ARM7處理器採用3級流水線來增加處理器指令流的速度,能提供0.9MIPS/MHz的指令處理速度。 PS:

原创 C語言堆棧入門——堆和棧的區別

C語言堆棧入門——堆和棧的區別 在計算機領域,堆棧是一個不容忽視的概念,我們編寫的C語言程序基本上都要用到。但對於很多的初學着來說,堆棧是一個很模糊的概念。堆棧:一種數據結構、一個在程序運行時用於存放的地方,這可能是很多初學者的

原创 getchar、scanf以及緩衝區的概念

  1、getchar()是stdio.h中的庫函數,它的作用是從stdin流中讀入一個字符,也就是說,如果stdin有數據的話不用輸入它就可以直接讀取了。       getch()和getche()是conio.h中的庫函數,它的作用

原创 ESP8266調試-P2P(AP模塊與STA模塊通信)

ESP8266有三種模式可以選擇,AP/STA/AP+STA,  下面我們要實現的是模塊與模塊之間點對點的通信 通信的三個過程 1. 建立WiFi連接  a. 首先一個模塊配置爲AP模式,開啓WiFi熱點,(可以設置WiFi

原创 stm32存儲結構& 存儲器映射

 問題:             1   什麼是存儲器映射?是怎麼一個運作過程?            2   stm32總體架構            3   CM3內核結構 1 STM32系統結構     要想深刻理解

原创 Linux下的tar壓縮解壓縮命令詳解

tar -c: 建立壓縮檔案 -x:解壓 -t:查看內容 -r:向壓縮歸檔文件末尾追加文件 -u:更新原壓縮包中的文件 這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的參數是根據需要在壓縮或解

原创 如何編寫有多個返回值的C語言函數

1引言        筆者從事C語言教學多年,在教學中學生們常常會問到如何編寫具有多個返回值的c語言函數。編寫有多個返回值的函數是所有C語言教材裏均沒有提到的知識點,但在實際教學與應用的過程中我們都有可能會遇到這樣的問題。有學生也嘗試了不

原创 Linux開發環境搭建與使用——Linux必備軟件之Samba

假如我們是在ubuntu環境上做相應的開發,有的時候,我們需要把我們寫的程序共享給別人,或者,自己拷貝出來備份一份。我們習慣用U盤拷貝,如果需要頻繁拷貝的話,這樣會不太方便。這裏給大家介紹一種更好的方法:通過Samba服務器共享。

原创 C語言中scanf函數與輸入緩衝區之間的關係

討論下scanf函數,輸入緩衝區的關係   樣例來源於算法競賽入門經典第一章實驗部分的內容,經過測試發現scanf函數對於整形數據在讀入時會過濾掉 空格符 、換行符 和 水平製表符。按照提示,如果b的值非法,比如說輸入一個字符‘s’,

原创 字符指針與字符數組真正的區別

問題緣起 先看一個示例 示例1 #include <stdio.h> int main() { char *p = "hello"; char q[] = "hello"; printf ("p: