C 學習筆記2 C 引用 vs 指標

2021-08-28 03:55:32 字數 1487 閱讀 9362

引用很容易與指標混淆,它們之間有三個主要的不同:

1.不存在空引用。引用必須連線到一塊合法的記憶體。

2.一旦引用被初始化為乙個物件,就不能被指向到另乙個物件。指標可以在任何時候指向到另乙個物件。

3.引用必須在建立時被初始化。指標可以在任何時間被初始化。

void swap(int* a, int* b)//這裡需要注意了,不是直接交換指標位址,而是交換位址裡面的值

int s = 5;

int& spointor = s;

void swap2(int& a, int& b)

int a = 3;

int b = 4;

// swap(&a,&b);

swap2(a,b);

cout << "a = " << a << ";b = " << + b << endl;

最終結果都是:a = 4;b = 3

const修飾指標

1.通過指標修改const修飾的常量

const int a = 10;

int *p += &a;

*p = 100;

a =100;

可以通過1級指標修改乙個常量的值

2.const修飾指標型別 int * 不能改變指標變數指向的記憶體位址的值 但是可以改變指標指向的位址 

const int *p = &a

p=&b

*p = 100

可以改變指標指向的位址

3.const修飾指標變數    能改變指標指向位址的值,但不能改變指標指向的位址

int * const p = &a;

*p = 100;

p=&b

可以修改指標指向位址的值

4.const修飾指標型別修飾指標變數  不能改變指標指向的的值 也不能改變指標指向的位址 

const int * const *p = &a;

*p =100;

p = &b;

可以通過二級指標進行修改

#define _crt_secure_no_warnings

#include#includeextern void sort(int* p, int length);

int main()

; int* p = arr;

int length = sizeof(arr) / sizeof(int);

printf("len = %d\n", length);

for (int i = 0; i < length; i++)

printf("\n");

sort(p, sizeof(arr) / sizeof(int));

for (int i = 0; i < length; i++)

return exit_success;

} void sort(int* p, int length)

}} }

C 學習筆記2 C 變數

1 當乙個精度高的資料型別與乙個精度低的資料型別進行運算時,定義運算結果的變數型別必須與精度最高的變數型別相同。這是為了防止在運算過程中造成資料丟失。如下 double a 42.29 int b 4229 int c a b console.writeline c c console.readke...

C 引用 vs 指標

引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。引用很容易與指標混淆,它們之間有三個主要的不同 試想變數名稱是變數附屬在記憶體位置中的標籤,您可以把引用當成是變數附屬在記憶體位置中的第二個標籤。因此,您可以通過原始變...

C 深度解析教程學習筆記(2)C 中的引用

1 變數名的回顧 變數是一段實際連續儲存空間的別名,程式中通過變數來申請並命名儲存空間 通過變數的名字可以使用儲存空間。變數的名字就是變數的值,變數名是取位址操作 2 c 中新增加了引用的概念 引用可以看作乙個己定義變數的別名 引用的語法 type name var type 為型別名,name 為...