原创 C語言的預處理命令的問題

預處理命令是在程序編譯階段進行執行的命令,用於編譯與特定環境相關的可執行文件。預處理命令擴展了C語言。 一、宏替換命令 不用多講,大家都懂。 #define 標識符 字符串 下面總結一些比較特殊的宏: 1、交換兩個參數值 //一定要注

原创 關鍵字volatile以及相關問題

一個定義爲volatile的變量,編譯器(優化器)每次用到這個變量時必須從該變量的地址處讀取該值,而不是保存在寄存器裏的備份。 比如:     ①多線程應用中被幾個任務共享的變量。     ②並行設備的硬件寄存器(如狀態寄存器)。    

原创 虛擬機無法識別USB

虛擬機無法識別USB cat /etc/group | grep vbox whoami sudo usermod -a -G vboxusers 系統名字 cat /etc/group | grep vbox sudo reboot -

原创 海康一面涼經

  時間:2019.9.25 地點:百家湖亞朵酒店 崗位:嵌入式軟件開發(DSP/多媒體&智能應用)   搞不懂爲什麼選這個崗位。。。。。。 進去,自我介紹,面試官看簡歷,自我介紹還沒結束,已經感受到面試官意興闌珊了。。。。。。   面試

原创 gdb調試的基本使用

原文鏈接:https://blog.csdn.net/zdy0_2004/article/details/80102076 https://www.cnblogs.com/HKUI/p/8955

原创 switch與if else的效率問題

原文鏈接:https://www.cnblogs.com/balingybj/p/5751707.html         switch...case與if...else的根本區別在於,swit

原创 二叉樹的建立與遍歷詳解 菜鳥都能看懂的教程

原文鏈接:https://blog.csdn.net/ac_blood/article/details/77047877 樹形結構要多利用遞歸來求解,遞歸的關鍵就是想清楚所有的基準情形,然後擴展

原创 博流智能科技面嵌入式開發工程師面經

暑假時學校研電賽召開的招聘會,當時投了8,9家公司,收到面試邀請兩家,一家江蘇蘇美達(由於當時在實習就沒去),一家今天這家。   今天面博流智能科技,內心倍遭打擊,特此記錄,引以爲戒。 約的3點,早到了一個鐘頭,失誤了,結果下午精神沒有達

原创 編譯器優化問題

首先來分析一段代碼: char *a = "hello"; char *b = "hello"; if(a == b) printf("YES"); else printf("NO"); "hello"是一個常量字符串,

原创 遞歸的一些經典算法

1、斐波那契數列              0,  當n=0; F(n) = {1,   當n=1;              F(n-1) + F(n-2),   當n>1; int Fbi(int i) { if(i < 2

原创 位操作(Bit manipulation)

    嵌入式系統總是要用戶對變量或寄存器進行位操作。給定一個整型變量a,寫兩段代碼,第一個設置a的bit3,第二個清除a的bit3。 在以上兩個操作中,要保持其他位不變。   用#define和bit mask操作,這是一個有極高可移植

原创 全局變量可不可以定義在可被多個.c文件包含的頭文件中?

可以,在頭文件或不同的c文件中用static來修飾同名全局變量。 另外一點,可以在不同的c文件中聲明同名的全局變量,前提是其中只能有一個c文件中對此變量賦值,此時鏈接不會出錯。 extern和static不能同時修飾同一變量。 鏈接規範,

原创 C語言貪心法

    C語言有這樣一個規則:每一個符號應該包含儘可能多的字符。也就是說,編譯器將程序分解成符號的方法是,從左到右一個一個字符的讀入,如果該字符可能組成一個符號,那麼再讀入下一個字符,判斷已經讀入的兩個字符串是否可能是一個符號的組成部分;

原创 嵌入式系統中固定內存位置的訪問,中斷的使用以及動態內存分配

一、嵌入式系統經常具有要求程序員去訪問某特定的內存位置的特點。在某工程中,要求設置一絕對地址爲0x67a9的整型變量的值爲0xaa66。編譯器是一個純粹的ANSI編譯器。 int *ptr; ptr = (int *)0x67a9; *

原创 分別寫出BOOL,int , float,指針類型的變量a與“零”的比較語句

       BOOL: if(a) or if(!a); int: if(0 == a); float: const float EXP = 0.000001; if(a<EXP && a>-EXP