嵌入式QT基礎 C 基礎語法及與C的區別

2021-10-09 22:25:49 字數 3758 閱讀 1326

c++物件導向程式設計

1. 源**的儲存

c++原始碼儲存於字尾為.cpp的檔案中,

標頭檔案儲存在字尾為.hpp的檔案中。

2. 標頭檔案
c++的標頭檔案不再以 .h結尾。例如:

#include < iostream>

#include < string>

…標準標頭檔案可以相容c語言的用法,但是不太推薦,應使用如下方法:

#include < cstdio>

#include < cstring>

… 非標準標頭檔案應遵循c語言的使用方法:

#include

3. 輸入輸出及命名空間
#include

#include

using

namespace std;

//命名空間1

namespace myspace1

}//匿名命名空間

namespace

intmain

(void

)

4.引用(references)

1:定義

引用就是某個目標變數的「別名」

2:注意

(1)申明乙個引用的時候,切記要對其進行初始化

(2)引用宣告完畢後,相當於目標變數名有兩個名稱,不能再把該引用名作為其他變數名的別名;

(3)引用本身不佔儲存單元,系統也不給引用分配儲存單元;

(4)不能返回區域性變數的引用。因為區域性變數會在函式返回後被銷毀,因此被返回的引用就成為了"無所指"的引用,程式會進入未知狀態;

(5)不能返回函式內部new分配的記憶體的引用

(6)可以返回類成員的引用,但最好是const

3.語法

變數、常量、指標的引用,作為函式引數只能實現資料的雙向傳遞

#include

#include

using

namespace std;

//傳址實現

void

ptr_swap

(int

*pa,

int*pb)

//通過引用實現

void

ref_swap

(int

&a,int

&b)int

main

(void

)

陣列的引用:

陣列作為函式引數,保留陣列的特性,傳入的引數引用即整個陣列;

但是喪失了陣列的靈活性,引用的陣列大小必須與原陣列匹配。

所以不經常使用。

#include

using

namespace std;

void

print_arr

(int a,

int n)

//引用陣列,a即為整個陣列,陣列大小必須與主函式一致 為9,否則報錯

void

print_arr_ref

(int

(&a)[9

])intmain()

;//print_arr(arr,9);

print_arr_ref

(arr)

;return0;

}

引用作為函式的返回值,可以作為左值使用

引用類似於指標,但是比指標更方便高效

#include

using

namespace std;

//引用作為函式返回值

int&

max(

int&x,

int&y)

intmain()

5.c++的記憶體分配

1.c語言中的堆記憶體管理

malloc/free

calloc -------- 分配的記憶體會被初始化為0

realloc ------- 調整分配記憶體的大小

2.c++總的記憶體分配

new/delete ---------- 分配和釋放單個記憶體

new/delete ------- 分配和釋放多個記憶體

#include

using

namespace std;

intmain

(void

)

6.函式過載(overload)、啞元

1.概念

c語言不允許函式過載,但是c++允許。

c++中函式名相同,形參列表不同的函式構成過載關係。

引數列表不同指:引數型別不同、引數個數不同、引數順序不同、不考慮返回值型別

啞元:函式的引數只有型別,沒有形參名

2.語法

#include

using

namespace std;

intadd

(int a,

int b)

double

add(

double a,

double b)

double

add(

int a,

double b)

double

add(

double a,

int b)

//啞元(引數無區別但是需要過載時使用)

void

print

(int

)void

print()

intmain()

7.函式引數的預設值

1.概念

函式的預設值指的是在呼叫函式時,如果不提供實參,就選擇使用引數的預設值;

如果傳遞了實參,使用實參來覆蓋預設值,

c++函式的引數可以選擇其中一些形參有預設值。

2.優點

減少傳參的個數、提高函式呼叫的效率、方便函式的呼叫

3.語法

#include

using

namespace std;

//函式引數的預設值,必須從右往左給 ☆☆☆

void

print_arr

(int

*a,int n=5,

char ch=

',')

intmain()

;print_arr

(arr)

;print_arr

(arr,7)

;print_arr

(arr,9,

' ')

;print_arr

(arr,9,

'-')

;return0;

}

嵌入式C語言基礎試題

include 設定a值的bit3位,使其他bit位保持不變 define setbit3 a a 1 3 define resetbit3 a a 1 3 測試函式宣告 void test1 void void test2 void void test3 void void test4 void ...

嵌入式基礎

以應用為中心 以計算機技術為基礎,軟硬體可裁剪,應用系統對功能 可靠性 成本 體積 功耗和應用環境有特殊要求的專用計算機系統。是將應用程式 作業系統和計算機硬體整合在一起的系統。1.嵌入式系統的構成 嵌入式微處理器 嵌入式作業系統 外圍應用裝置 應用軟體系統。2.嵌入式處理器 嵌入式微處理器 嵌入式...

嵌入式基礎

整體思路 time指標指向該暫存器,所以定義乙個timeop位域,利用time指標將暫存器中的值放至timeop中,儲存後面暫存器讀取到的結果再經過修改返回到暫存器裡 用16位指標time指向這裡使用的16位暫存器,用來讀取和改變暫存器值 借助強制轉換的方式將值傳給time指標,指標將值給暫存器,將...