1. 程式人生 > 其它 >嵌入式C第一次任務

嵌入式C第一次任務

技術標籤:學習cc++c語言嵌入式

1.位運算

原創大佬名7TribeZ 題目:位運算

按位與 “&”:只有對應的兩個二進位均為1時,結果的對應二進位制位才為1,否則為0。

20:1 0100;19:1 0011;21 & 18的運算結果為1 0000即為16

按位或 “|”: 只有對應的兩個二進位都為0時,結果的對應 二進位制位才是0,否則為1。

0:1 01002;19:1 0011;21 | 18的運算結果為1 0111即為23

按位異或 “^”:即只有對應的兩個二進位不相同時,結果的對應二進位制 位才是1,否則為0。

20:1 0100;19:1 0011;21 ^ 18的運算結果為00111即為13

按位非 “~”:

將運算元中的二進位制位0變成1,1變成0。(特殊要顯示前面的位數以32位為例)

20: 0000 0000 0000 0000 0000 0000 0001 0100;~20:1111 1111 1111 1111 1111 1111 1110 1011

左移運算子 “<<”:將a各二進位全部左移b位後得到的值。表示式:a << b (a不變)

20:1 0100;20 << 4:1 00100 0000 結果為320;實質是左移n位,就等於是乘以2^n

右移運算子 “>>”:將a各二進位全部右移b位後得到的值。表示式:a >> b (a不變)

20:1 0100;20 >> 4:0001 結果為1; 實質是右移n位,就等於是除以2^n,小數點後去尾法

2.靜態函式

靜態全域性變數的作用域侷限於一個原始檔內,只能為該原始檔內的函式公用, 因此可以避免在其它原始檔中引起錯誤。

靜態全域性變數:

(區域性變數會掩蓋全域性變數)


#include <iostream>
using namespace std;
 
static int b = 10;
 
void fun()
{
	int b = 0;
	cout << "b = " << b << endl;
	b++;
}
 
int main()
{
	for (int i = 0; i < 5; i++)
		fun();
 
	system("pause");
	return 0;
}

執行結果為:0 0 0 0 0 (五個0)

靜態區域性變數:


#include <iostream>
using namespace std;
 
void fun()
{
	int a = 0;
	static int b = 0;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	a++;
	b++;
}
 
int main()
{
	for (int i = 0; i < 5; i++)
		fun();
 
	system("pause");
	return 0;
}

執行結果為:00 01 02 03 04

3.extern 變數

原創大佬名weixin_40819954 題目:C語言中extern用法詳解

例如:

int i;                //i是具有外部連結的變數。
extern int m;   //m在別的檔案中被定義了,具有外部連結,這裡必須使用extern再次宣告。

1. extern修飾變數的宣告。如果檔案a.c需要引用b.c中變數int v,就可以在a.c中宣告extern int v,

然後就可以引用變數v。(extern int v可以放在a.c中的任何地方)

2. extern修飾函式的宣告。如果檔案a.c需要引用b.c中的函式,比如在b.c中原型是int fun(int mu),

那麼就可以在a.c中宣告extern int fun(int mu)。(extern int fun(int mu)可以放在a.c中任何地方)

關鍵字const

原篇文章:http://blog.csdn.net/xingjiarong/article/details/47282255

定義:

關鍵字const用來定義常量,如果一個變數被const修飾,那麼它的值就不能再被改變。

const int n=5;
int const n=5;

修飾變數n

const char* str="fdsafdsa";

修飾字符

常量指標與指標常量

常量指標是指標指向的內容是常量,不能通過這個指標改變變數的值,指向的值不能改變。但是能通過其他的引用來改變變數的值來改變以及常量指標可以指向其他的地址。

int a=5;
const int* n=&a;
a=6;
int a=5;
int b=6;
const int* n=&a;
n=&b;

指標常量是指指標本身是個常量,不能在指向其他的地址,但是地址中儲存的數值是可以改變的,可以通過其他指向改地址的指標來修改。

int a=5;
int *p=&a;
int* const n=&a;
*p=8;

注:區分常量指標和指標常量的關鍵就在於星號的位置,我們以星號為分界線,如果const在星號的左邊,則為常量指標,如果const在星號的右邊則為指標常量。如果我們將星號讀作‘指標’,將const讀作‘常量’的話,內容正好符合。int const * n;是常量指標,int *const n;是指標常量。

const修飾指標有4種形式

原創大佬名LS21206022021題目:const關鍵字(摘抄&總結)

第一種:const int *p; //p本身不是const的,而p指向的變數是const的

第二種:int const *p; //p本身不是const的,而p指向的變數是const的

第三種:int * const p; //p本身是const的,而p指向的變數不是const的

第四種:const int * const p;//p本身是const的,而p指向的變數也是const的