引用很容易與指標混淆,它們之間有三個主要的不同:
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 為...