工欲善其事,必先利其器(一)

2021-10-03 14:38:31 字數 4150 閱讀 1332

無規矩不成方圓,無五音難正六律。做任何事情都要有規矩,懂規矩,守規矩。身為一名合格的程式設計師,那我們一定要知道「差之毫釐,謬以千里」的道理。為了在開發中做到,提高**的可讀性和可維護性,同時避免函式得重寫,提高開發效率,我們需要掌握如下技巧:

它是一種預處理器指令,在預編譯階段將巨集名替換為後面的替換體 。

巨集的定義

由三部分組成     #define     width     960

預處理指令   巨集名     替換體(多行可用 \ 延續)

#include

#include

#define _width 1024

//巨集命名規則同變數名

intmain

(void

)

巨集定義的使用

不帶引數的巨集

在巨集中使用引數 (#define   first(x)   x+x)

#include

#include

// 不帶引數的巨集

#define _width 1024

// 帶引數的巨集

#define square(x) x*x

#define max(x,y) x>y?x:y

intmain

(void

)

為什麼要使用「結構」(結構體)?

當需要表示一些複雜資訊時,使用單純的資料型別很不方便。

比如:學生資訊(學號,姓名,班級,**,年齡)

什麼是「結構」?

結構,就是程式設計師自定義的一種「資料型別

是使用多個基本資料型別、或者其他結構,組合而成的一種新的「資料型別」

結構的定義

struct 結構名 

;//例項:

struct student

;/******特別注意: ***********

1)要以 struct 開頭

2)最後要使用分號

3)各成員之間用分號隔開

*****************************/

/********心得體會: ***********

對於結構體給我感受比較深的就是,

它和我們平常寫的變數相比,

是乙個超級變數

*****************************/

結構的初始化

#include

#include

#include

//結構,就是程式設計師自定義的一種「資料型別」

struct student

;//結構體包含結構體的情況

struct _class

;int

main

(void);

printf

(, rock.name, rock.age, rock.tel)

;//方式二 定義的時候我們可以指定初始化的屬性 vs/vc 不支援,但 gcc 是 支援的

struct student s1 =

;//方式三 單獨初始化每乙個屬性

struct student s2;

strcpy

(s2.name,

"楊過");

s2.age =

40;

s2.tel[0]

='\0'

;printf

(, s2.name, s2.age, s2.tel)

;//結構體中含有結構體

struct _class c1=,

,};printf

(, c1.martin.name, c1.martin.age, c1.martin.tel)

;system

("pause");

return0;

}

結構的使用

#include

#include

#include

struct student

;int

main

(void

), c2[16]

;//c2 = c1; //陣列不能直接賦值

system

("pause");

return0;

}

結構陣列

//struct 結構名 變數名[陣列大小]

#include

#include

#include

struct student

;int

main

(void

)

指向結構體的指標

//使用結構體變數址指標訪問結構體成員要使用 -> 符號

#include

#include

#include

struct _friend

;int

main

(void);

struct _friend *my_girl =

&girl;

printf

("小龍女的名字:%s, 性別:%s 年齡:%d\n"

, girl.name, girl.***==

'm'?

"男":

"女", girl.age)

;//指標訪問結構體變數的成員,有兩種方式

//方式 1. 直接解引

printf

("小龍女的名字:%s, 性別:%s 年齡:%d\n",(

*my_girl)

.name,

(*my_girl)

.***==

'm'?

"男":

"女",

(*my_girl)

.age)

;//方式 2. 直接使用指標訪問 ->

printf

("小龍女的名字:%s, 性別:%s 年齡:%d\n"

, my_girl-

>name, my_girl-

>***==

'm'?

"男":

"女", my_girl-

>age)

;system

("pause");

return0;

}//實際開發中我們常用 -> 符通過指標去訪問結構體指標變數的成員

使用結構體傳遞值

#include

#include

#include

struct programer

;//形參是結構體變數,值傳遞

struct programer add_salary

(struct programer p,

int num)

//形參使用結構體指標

void

add_salary1

(struct programer *p,

int num)

//形參使用引用

void

add_salary2

(struct programer &p,

int num)

//形參是結構體變數,值傳遞,返回引用

struct programer&

add_salary3

(struct programer p,

int num)

intmain

(void

)

注意:

一般不建議把結構體直接作為函式引數。

因為結構體的 size 比較大,直接傳遞,消耗效能!

解決方案:(使用指標和引用,優先使用引用)

工欲善其事必先利其器

裸機開發流程 1.編寫裸機程式 2.除錯裸機程式 3.生成2進製映像 編譯 鏈結 格式轉換 4.燒寫 執行2進製映像。嵌入式開發模型 交叉開發常用交叉工具 1 交叉編譯器,arm linux gcc 2 交叉鏈結器,arm linux ld 3 交叉轉換器,arm linux readelf 4 交...

工欲善其事,必先利其器

如何做好乙個答辯ppt?最為重要的是,不要照搬網上那些所謂的模板,不要用模板,不要用模板。你覺得模板很酷炫還是很大氣?所謂的模板醜不醜不說,很有可能不適合你要表達的東西,填鴨式的ppt是很糟糕的。去改動別人的ppt模板,來適應自己所要表達的內容,所花費的時間完全夠你做乙個ppt了。另外,報告用ppt...

「工欲善其事 必先利其器」

部落格不夠,日常來湊!haha,真的兩個週都沒有更新過文章了 愧疚 前兩天看到一句話講,只要精神上滿足,身體的疲憊算不上什麼。我好像真的達不到這個境界。為期半個多月的感冒真的讓我變懶散了好多,不過還好,感覺終於可以告一段落了。昨天終於好好的著手去寫趙老師留給我的作業 超怕過期的說 學了一丟丟pyth...