C 基礎及引用

2021-09-07 13:05:14 字數 3569 閱讀 7810

輸出

#include "

iostream"//

包含c++的標頭檔案

using

namespace std; //

使用命名空間 std 標準的命名空間 (在這個命名空間中定義了很多標準定義)

void

main()

求圓面積

//

在c++中 定義了乙個自定義資料型別 mycicle 圓形

class

mycicle

double getr() //

成員函式

double

gets()

};//

void

main03()

//用物件導向的方法

//1 類的抽象 成員變數和成員函式

//2 例項化 類的物件

//3 求面積

//面向過程加工的是 乙個乙個的函式

//物件導向加工的是:乙個乙個的類

//4 main整合測試

//思考1:類的呼叫 執行過程分析==>類**不是一步一步指向

//類是乙個資料型別,(固定大小記憶體塊的別名); 定義乙個類,是乙個抽象的概念,不會給你分配記憶體

//用資料型別定義變數的時候,才會分配記憶體

//思考2:拋磚: c++編譯器是如何處理 多個物件,呼叫類的成員函式的;具體一點:如何區分是c1 c2 c3 呼叫了gets,拋磚.....

定義變數的時候,初始值就已經固定下來了,後面需要呼叫函式才能改變成新的值,成員函式只有呼叫了才會執行

所謂namespace,是指識別符號的各種可見範圍。c++標準程式庫中的所有識別符號都被定義於乙個名為

std的

namespace中。

命名空間std封裝的是標準程式庫的名稱,標準程式庫為了和以前的標頭檔案區別,一般不加

".h"

當使用的時候,該標頭檔案沒有定義全域性命名空間,必須使用

namespace std

;這樣才能正確使用

cout。

命名空間

#include "

iostream

"using

namespace

std;

namespace

namespacea

namespace

namespaceb

; }

}void

main()

1) 當使用

的時候,該標頭檔案

沒有定義全域性命名空間,必須使用namespace std;這樣才能正確使用cout。若不引入using namespace std ,需要這樣做。

std::cout。

2) c++標準為了和c區別開,也為了正確使用命名空間,規定標頭檔案

不使用字尾.h。

3) c++命名空間的定義: namespace name

4) using namespace namespacea;

5) namespce定義可巢狀。

c++增強部分

1.c語言中的變數都必須在作用域開始的位置定義!!

c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義。

2.register關鍵字增強

c語言中無法取得

register

變數位址

在c++中依然支援

register

關鍵字

c++編譯器有自己的優化方式,不使用

register

也可能做優化

c++中可以取得

register

變數的位址

3.變數檢測增強

在c語言中,重複定義多個同名的全域性變數是合法的

在c++中,不允許定義多個同名的全域性變數

4.struct型別加強

c語言的

struct

定義了一組變數的集合,

c編譯器並不認為這是一種新的型別

c++中的

struct

是乙個新型別的定義宣告

5.c++中所有的變數和函式都必須有型別

6.新增bool型別

true代表真值,編譯器內部用

1來表示

false代表非真值,編譯器內部用

0來表示

負數也是true

在c語言中,表示式返回的是乙個數值

在c++中,表示式返回的是變數本身

const在c++中是乙個真正的常量,在c中可以通過指標修改

const int c = 5; 約等於 #define c 5

引用可以看做乙個已定義變數的別名(c語言沒有引用)

#includeusing

namespace

std;

void

main()

普通引用在宣告時必須用其它的變數進行初始化

struct

teacher

;void printft(teacher *pt)

//pt是t1的別名 ,相當於修改了t1

void printft2(teacher &pt)

//pt和t1的是兩個不同的變數

void

printft3(teacher pt)

void

main()

引用的本質

#include using

namespace

std;

void

main()

a和b是同一塊記憶體空間的門牌號,引用也佔空間(4個位元組,和資料型別沒關係)

引用在c++內部就是乙個常量指標&a  a=5 ==  *const a *a=5

#include using

namespace

std;

void modifya(int &a)

void modifyb(int * const

a) void

main()

間接賦值成立的三個條件

1定義兩個變數 (乙個實參乙個形參)

2建立關聯 實參取位址傳給形參

3*p形參去間接的修改實參的值

引用在實現上,只不過是把:間接賦值成立的三個條件的後兩步和二為一(當實參傳給形參引用的時候,只不過是c++編譯器幫我們程式設計師手工取了乙個實參位址,傳給了形參引用(常量指標))

若返回棧變數,不能成為其它引用的初始值

函式返回若是乙個引用,可以當左值

#include using

namespace

std;

int&g2()

void

main()

輸出11

101

C 基礎 引用

函式中引數的傳遞方式 傳值 在函式域中為引數重新分配記憶體,而把實參的數值傳遞到新分配的記憶體中。優點 不會改變實參的值 引用 引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名,也就是c 系統不為引用型別變數 分配記憶體空間。引用主要用於函式之間的資料傳遞。優點 如果實參是乙個複雜的...

C 基礎 引用

什麼是引用 引用的概念及用法 引用做引數 引用做返回值 引用和指標的區別 引用其實就是給物件 起別名 定義了乙個原有物件的同義詞,對引用進行的操作和對被引用所繫結的物件做的操作等價 用法 型別 變數名 變數名 如 int a 0 int b a 引用的型別必須與被引用的型別相同 宣告引用的同時必須對...

C 引用基礎

引用 includeusing namespace std struct student struct teacher int getnum student s2 void main 引用賦值 b 13 printf a d n a 結構體引用 student s1 s1.age 12 定義s1的引...