無規矩不成方圓,無五音難正六律。做任何事情都要有規矩,懂規矩,守規矩。身為一名合格的程式設計師,那我們一定要知道「差之毫釐,謬以千里」的道理。為了在開發中做到,提高**的可讀性和可維護性,同時避免函式得重寫,提高開發效率,我們需要掌握如下技巧:
它是一種預處理器指令,在預編譯階段將巨集名替換為後面的替換體 。
巨集的定義
由三部分組成 #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...