c++基础学习(05)--(指针,引用)
文章目錄
- 目錄
- 1.指針
- 2.引用
目錄
1.指針
#include <iostream>using namespace std;int main () {int var1;char var2[10];cout << "var1 變量的地址: ";cout << &var1 << endl;cout << "var2 變量的地址: ";cout << &var2 << endl;return 0; }var1 變量的地址: 0x7ffd8696414c
var2 變量的地址: 0x7ffd86964150
Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20
Address of var[0] = 0xbfa088b0
Value of var[0] = 10
Address of var[1] = 0xbfa088b4
Value of var[1] = 100
Address of var[2] = 0xbfa088b8
Value of var[2] = 200
Address of var[0] = 0xbfce42d0
Value of var[0] = 10
Address of var[1] = 0xbfce42d4
Value of var[1] = 100
Address of var[2] = 0xbfce42d8
Value of var[2] = 200
然而,指針和數(shù)組并不是完全互換的。例如,請看下面的程序:
把指針運(yùn)算符 * 應(yīng)用到 var 上是完全可以的,但修改 var 的值是非法的。這是因?yàn)?var 是一個(gè)指向數(shù)組開頭的常量,不能作為左值。
由于一個(gè)數(shù)組名對應(yīng)一個(gè)指針常量,只要不改變數(shù)組的值,仍然可以用指針形式的表達(dá)式。例如,下面是一個(gè)有效的語句,把 var[2] 賦值為 500:
*(var + 2) = 500;
上面的語句是有效的,且能成功編譯,因?yàn)?var 未改變
#include <iostream>using namespace std; const int MAX = 3;int main () {int var[MAX] = {10, 100, 200};int *ptr[MAX];for (int i = 0; i < MAX; i++){ptr[i] = &var[i]; // 賦值為整數(shù)的地址}for (int i = 0; i < MAX; i++){cout << "Value of var[" << i << "] = ";cout << *ptr[i] << endl;}return 0; }Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200
Value of var = 3000
Value available at *ptr = 3000
Value available at **pptr = 3000
2.引用
#include <iostream>using namespace std;int main () {// 聲明簡單的變量int i;double d;// 聲明引用變量int& r = i;double& s = d;i = 5;cout << "Value of i : " << i << endl;cout << "Value of i reference : " << r << endl;d = 11.7;cout << "Value of d : " << d << endl;cout << "Value of d reference : " << s << endl;return 0; }Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7
交換前,a 的值: 100
交換前,b 的值: 200
交換后,a 的值: 200
交換后,b 的值: 100
改變前的值
vals[0] = 10.1
vals[1] = 12.6
vals[2] = 33.1
vals[3] = 24.1
vals[4] = 50
改變后的值
vals[0] = 10.1
vals[1] = 20.23
vals[2] = 33.1
vals[3] = 70.8
vals[4] = 50
總結(jié)
以上是生活随笔為你收集整理的c++基础学习(05)--(指针,引用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用docker配置深度学习开发环境
- 下一篇: 剑指offer(刷题61-65)--c+