2 c 基礎 位址和引用

2021-10-16 12:46:22 字數 3371 閱讀 3099

指標的定義

int a =10;

// 指標定義的語法;資料型別 * 指標變數

int* p;

// 讓指標記錄變數a的位址

p =&a; cout <<

<<

&a << endl;

cout <<

"指標p為:"

<< p << endl;

使用指標

// 可以通過解引用的方式找到指標指向的記憶體

// 指標前加 * 代表解引用,找到指標指向的記憶體中的資料

*p =

1000

; cout <<

"a = "

<< a << endl;

cout <<

"*p = "

<<

*p << endl;

指標占用空間

cout <<

"sizeof (int *)"

<<

sizeof

(int*)

<< endl;

cout <<

"sizeof (float *)"

<<

sizeof

(float*)

<< endl;

cout <<

"sizeof (double *)"

<<

sizeof

(double*)

<< endl;

cout <<

"sizeof (char *)"

<<

sizeof

(char*)

<< endl;

空指標 記憶體編號為0-255系統占用記憶體

// 空指標

int* p3 =

null

;// cout << *p3 << endl; 報錯,記憶體編號為0-255系統占用記憶體,

// *p3 = 100; 報錯,不允許使用者訪問

野指標,指標指向非法的記憶體空間,沒有申請的記憶體空間是非法記憶體空間

int

* p4 =

(int*)

0x1100

;// 0x1100這個空間還沒有申請就訪問,會報錯

// cout << *p4 << endl;

結構體指標,結構體指標操作屬性寫法

stu-

>age

void

printstudent

(const student* stu)

const修飾位址或常量

int a =10;

int b =

10;

指標指向的值不能改,指標的指向可以改。eg:

const

int* p =

&a;// *p = 20; 錯誤,指標指向的值不能改

p =&b;

// 正確

指標的指向不可以改,指標指向的值可以改。eg:

int

*const p2 =

&a;// p2 = &b; // 錯誤

*p2 =

20;

指標的指向和指標指向的值 都不可以改

const

int*

const p3 =

&a;//*p3 = 100; 錯誤

//p3 = &b; 錯誤

指標運算元組

// 4. 指標和陣列

int arr=

;int

* p4 = arr;

cout <<

"第乙個元素:"

<< arr[0]

<< endl;

cout <<

"指標訪問的第乙個元素 "

<<

*p << endl;

for(

int i =

0; i <

5; i++

)

int

main()

for(

int i =

0; i <

10; i++

)delete

arr;

return0;

}

new生成的變數,其記憶體空間不會被釋放,直到視窗被關閉,即**

int

main()

資料型別 &別名 = 原名

int a =10;

int&b = a;

引用就是位址值不能修改的位址,必須初始化,初始化後不能更改,所以也是位址傳遞。

自動轉換為 int* const ref = &a;

void

func

(int

& ref)

intmain()

void

swap01

(int a,

int b)

void

swap02

(int

*a,int

*b)void

swap03

(int

&a,int

&b)

int

main()

區域性引用不能作為函式返回值,因為區域性引用在函式呼叫後,其指向的記憶體資料就會被刪除。若被static修飾,不會被刪除

int

&test01()

int&

test02()

intmain()

引用(別名)可以做左值

// 2.引用(別名)可以做左值

test02()

=1000

; cout <<

"ref2= "

<< ref2 << endl;

// 1000

cout <<

"ref2= "

<< ref2 << endl;

// 1000

為防止傳到函式中的引用發生變化,有const修飾引用

void

showvalue

(const

int& val)

2 C 中的引用

一.c 中的布林型別 c 中的布林型別只有true 和 false。true代表真,編譯器用1表示。false代表假,編譯器用0表示。include int main int argc,char argv 二 三目運算子的公升級 c語言中,三木運算子只能返回變數值,不能當左值使用。在c 中三目運算子...

2 C 中的引用

int a 10 int b a int b 是錯誤的必須初始化 引用在初始化後,不可以改變 int c 20 b c 賦值操作,而不是更改引用。include using namespace std 交換函式 1.值傳遞 形參不會修飾實參 void swap1 int a,int b void s...

(2)C 語法基礎

1.關鍵字 在c 中常常使用關鍵字,關鍵字也叫保留字,是對c 有特定意義的字串。關鍵字在visual studio 環境的 檢視中預設以藍色顯示。例如,中的using namespace class static void等,均為c 的關鍵字。2.命名空間 系統命名空間使用using關鍵字匯入,sy...