Bootstrap

C++(二十一)

前言:

本文承接上文,将详细讲解指针概念。

一,通过指针了解变量的数值。

在将变量地址存入指针后,从指针反推也可以知道原变量的值,若想进行反退,就需要使用间接引用运算符:*。

语法:

*指针名;

使用该运算符,就可以知道指针中存储地址对应的变量的值。

例如:

# include <iostream>
using namespace std;
# include <iostream>
using namespace std;

int main(){
    int a = 5;
    int *pA = &a;
    cout << "变量a的值是:"<<a << endl;
    cout << "变量a的地址是:"<<&a << endl;
    cout << "指针pA的值是:"<< pA<< endl;
    cout << "指针pA指向的值是:"<< *pA<< endl;
    return 0;
}

运行结果如下:

简而言之,可以通过间接引用运算符*,得到指针所指向变量的值。

二,知识点总结。

结合上一篇文章的知识点,可以得出以下结论:

a;//定义变量a。
&a;//变量a的地址
pA;//存储变量a地址的指针pA
*pA;//存储变量a地址的指针(pA)的所指向变量——a的值

在同时声明多个指针时,可以使用如下方式编写:

 int *pA;
 int *pB;
 int *pC;
int *pA , *pB, *pC;

三,在指针中代入其他地址。

指针就是存储地址的变量,因为C++代码时逐行运行的,因此可以将统一指针多次赋值。

例如:

# include <iostream>
using namespace std;

int main(){
    int a, b;//定义两个变量
    int *pA ;//定义一个指针变量
    a = 10;//给变量a赋值
    b = 20;//给变量b赋值
    pA = &a;//将变量a的地址赋值给指针pA
    cout << "变量a的值是:"<<a << endl;//输出变量a的值
    cout << "变量a的地址是:"<<&a << endl;//输出变量a的地址
    cout << "指针pA的值是:"<< pA<< endl;//输出指针pA的值
    cout << "指针pA指向的值是:"<< *pA<< endl;//输出指针pA指向的值
    pA = &b;//将变量b的地址赋值给指针pA
    cout << "变量b的值是:"<<b<< endl;//输出变量b的值——变量b的值
    cout << "变量b的地址是:"<<&b<< endl;//输出变量b的地址——变量b的地址
    cout << "指针pA的值是:"<< pA<< endl;//输出指针pA的值——变量b的地址
    cout << "指针pA指向的值是:"<< *pA<< endl;//输出指针pA指向的值——变量b的值
    return 0;
}

运行结果为:

在指针中带入其他变量地址能够改变指针值。

四,使用指针改变变量。

在上文中,可以知道,*pA的值就是变量的值,可以通过更改*pA的值来改变。

例如:

# include <iostream>
using namespace std;

int main(){
    int a;//定义变量a
    int*pA;//定义指针pA
    a=2;//赋值
    pA=&a;//将a的地址赋给指针pA
    cout<<*pA<<endl;//输出指针pA所指向的值
    *pA=3;//通过指针pA修改a的值
    cout<<a<<endl;//输出a的值
 return 0;
}

运行结果为:

;