一.c和c+的區別總結
1.檔案區別
簡單來說,原始檔字尾名不同,乙個.c,乙個.c++,在建立原始檔什麼都不給的情況下,預設為.cpp
2.返回值
在c中,如果沒有給定函式返回值型別,預設為int 型;在c++中,如果沒有給定函式返回值型別,必須返回void型,如果沒有void,編譯將會出錯。
3.引數列表
在c中,函式如果沒有指定引數列表,預設可以接收任意多個引數
在c+中,因為嚴格的引數列表檢測,沒有引數列表的情況下,預設為void,不接收任何引數
4.預設引數
預設引數是宣告定義函式時,為函式的引數指定乙個預設值。在呼叫該函式時,如果沒有定義實參,則使用該預設值
5.函式過載
c語言支援函式過載,c++語言不支援函式過載(過載函式是函式的一種特殊情況,c+允許在同一作用域中宣告幾個功能類似的同名函式,這些同名函式的形參列表,引數個數,型別,順序,必須不同,常用來處理功能類似,資料型別不同的函式)
二.引用與指標
1.引用概念
引用不是新定義乙個變數,而是給已存在變數取乙個別名,編譯器不會為引用變數新開闢一塊新的記憶體空間,而是與已存在的變數共用一塊記憶體空間
2.引用特性
(1)引用在定義時必須初始化
(2)乙個變數可以有多個引用
(3)引用一旦繫結乙個變數,就不能改變為其他變數的引用
c語言中函式有兩種傳參的方式:
傳值和傳址
。以傳值方式,
在函式呼叫過程中會生成乙份臨時變數用形參代替
,最終把實參的值傳遞給新分
配的臨時變數即形參。它的優點是避免了函式呼叫的***,確無法改變形參的值。
如果要改變實
參的值,只能通過指標傳遞。
以下為三個例子比較::
(1)傳值
void swap(int left,int right)
(2)指標傳址
void swap(int *left,int *right)
(3)引用交換
void swap(int &left,int &right)
**指標交換和引用交換最簡單不同,在交換變數時,指標也要隨著交換,而引用不用
3.引用與指標的區別
(1)相同點:底層的實現方式相同,都是按照指標的方式來實現的
(2)不同點:引用必須初始化,而指標可以不用,需要時初始化為null
引用一旦定義就不能改變,而指標可以。
sizeof不同,自++含義不同,可以有多級指標,但不能有多級引用
4.總結
(1)、引用在定義時必須初始化,指標沒有要求。
(2)、一旦乙個引用被初始化為指向乙個物件,就不能再指向
其他物件,而指標可以在任何時候指向任何乙個同型別物件
(3)、沒有null引用,但有null指標。
(4)、在sizeof中含義不同:引用結果為引用型別的大小,
但指標始終是位址空間所佔位元組個數。
(5)、引用自加改變變數的內容,指標自加改變了指標指向
(6)、有多級指標,但是沒有多級引用
(7)、引用比指標使用起來相對更安全
Problem A 類的初體驗
home web board problemset standing status statistics time limit 1 sec memory limit 128 mb submit 723 solved 661 submit status web board 定義乙個類data,只有乙個...
Problem A 類的初體驗
定義乙個類data,只有乙個double型別的屬性和如下3個方法 1.void init double d 初始化屬性值。2.double getvalue 獲得屬性值。3.void showvalue 顯示屬性值。乙個double型別的數值。輸出輸入的值2次,每次佔一行。3.14 3.143.14...
XUtils3框架的初始體驗 一
1 開源位址 2 匯入工程 使用gradle構建時新增一下依賴即可 compile org.xutils xutils 3.2.2 使用eclipse構建時操作步驟如下 2 將xutils 3.2.0.jar 以及armeabi新增到工程的libs中即可。3 簡單介紹 xutils3一共有4大功能 ...