指標:是一個變數,存盤一個變數的地址,
參考:是變數的別名,
1、初始化
- 指標定義時不必初始化,參考必須初始化,
- 指標初始化時可為NULL,參考不能初始化為NULL,
int a = 10;
int *p = &a;
int &y = a;
cout << "a是" << a << endl;
cout << "p是" << p << endl;
cout << "*p是" << *p << endl;
cout << "y是" << y << endl;
cout << "&y是" << &y << endl;
2、const修飾
const修飾指標,const放在之前所指變數值不可改變,const放在之后,指標本身不能改變,指向的變數值可以改變,
int a = 10;
int b = 20;
const int *p1 = &a;
*p1 = 20; // 錯誤
p1 = &p2; // 正確
int a = 10;
int b = 20;
int const* p2 = &b;
*p2 = 30; // 正確
p2 = &a; // 錯誤
const修飾參考,放在&之前不能修改參考所表示的變數的值,放在&之后,const作用被忽略,
int a = 10;
const int &y = a;
y = 20; // 正確
3、參考從一而終
非常指標在指標賦值后可以改變指標值;參考在初始化后不能再作為別的變數的別名,
int a = 10;
int b = 20;
const int *p = &a;
int &y = a;
y = b;
cout << "a是" << a << endl;
cout << "p是" << p << endl;
cout << "y是" << y << endl;
cout << "&y是" << &y << endl;
// 輸出
a是20
p是0xfc947ff794
y是20
&y是0xfc947ff794
y指向的地址沒有改變,只是將b的值賦給a,
4、函式傳參
int test1(int a, int b)
{
a = 1;
b = 1;
return a + b;
}
int test2(int &a, int &b)
{
a = 1;
b = 1;
return a + b;
}
int test3(int *a, int *b)
{
*a = 1;
*b = 1;
return *a + *b;
}
測驗test1
int a = 10;
int b = 20;
int c = test1(a, b);
cout << "a是" << a << endl;
cout << "b是" << b << endl;
cout << "c是" << c << endl;
// 輸出
a是10
b是20
c是2
測驗test2
int a = 10;
int b = 20;
int c = test2(a, b);
cout << "a是" << a << endl;
cout << "b是" << b << endl;
cout << "c是" << c << endl;
// 輸出
a是1
b是1
c是2
測驗test3
int a = 10;
int b = 20;
int c = test3(&a, &b);
cout << "a是" << a << endl;
cout << "b是" << b << endl;
cout << "c是" << c << endl;
// 輸出
a是1
b是1
c是2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546770.html
標籤:C++
上一篇:obs studio 插件
下一篇:C語言代碼規范
