一分钟弄清楚指针

要弄清楚指针就要弄清楚内存地址和内存数据,就比如我们去买东西,某个店铺的地址(指针变量pa)就是内存地址&a,而店铺名(普通变量a)就是普通变量a,店铺里的商品(*pa)就是内存数据。 

1.指针变量含义

要弄清楚指针就要弄清楚指针变量含义,即内存地址。

2.指针变量的定义

接下来说指针变量的定义

指针变量定义说白了,就是普通的变量定义(<数据类型,int,float等> <变量名>)中间加了一个*,即(<数据类型,int,float等> * <变量名>),加*只为了在指针变量声明的时候表明这个是指针变量

3.两大符号

然后就是两大符号

1.&:取址符

作用:根据普通变量(内存数据)获得普通变量的内存地址,即指针变量,就像咱们平常找店铺(普通变量a)的地址(内存地址),用&a去获得该内存地址。

//&取址符:根据变量(内存数据),获取变量的内存地址
cout << "变量a的内存地址"<<  &a << endl;
cout << "变量b的内存地址" << &b << endl;

2.*:取值符

作用:根据指针变量(内存地址)获得指针变量的内存数据,即变量的值,就像咱们平常去商店地址(内存地址)找到商店(普通变量),然后买商店里的东西(内存数据)。

//*取值符:根据变量内存地址(指针变量),从内存中获取变量的值
cout << "*(&a):根据a的内存地址取值-》"<< * (&a) << endl;
cout <<"a变量的内存:"<< a << endl;

4.详细代码

// 指针.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//变量:内存数据
// 指针变量:内存地址
//&取址符:根据变量(内存数据),获取变量的内存地址
//*取值符:根据变量内存地址(指针变量),从内存中获取变量的值

#include <iostream>
using namespace std;

int main()
{
    int a = 10;
    float b = 9.7f;//9.7默认为double 类型,加f表明为float类型
    int c = 20;


    &取址符:根据变量(内存数据),获取变量的内存地址
    //cout << "变量a的内存地址"<< & a << endl;
    //cout << "变量b的内存地址" << &b << endl;

    *取值符:根据变量内存地址(指针变量),从内存中获取变量的值
    //cout << "*(&a):根据a的内存地址取值-》"<< * (&a) << endl;
    //cout <<"a变量的内存:"<< a << endl;


    //int类型指针,只能存int类型的地址
    // float类型指针,只能存float类型的地址

    //指针变量的定义   <类型> * <变量>  存地址  
    // 指针变量是*后面的变量,
    // *不是指针变量名的一部分,加一个*只为表示该变量是一个指针变量  
    // 指针变量的作用就是获取变量的地址
    int* pa = &a;//指针必须初始化为地址
    float* pb = &b;
    cout <<"a变量的内存地址为指针变量即pa->:"<< pa << endl;
    cout << "b变量的内存地址:" << pb << endl;

    //通过指针变量(内存地址)去取值(内存数据)
    cout << "a变量的值为从内存地址中取值,用*(取值符)加指针变量去取a的值->*pa,即" << *pa << endl;
    cout << "b的值用指针来取值:" << *pb << endl;

    //指针的常用操作
    //指针可以不指向普通变量
    int* p;
    p = pa;//给指针变量赋值,获取a地址的内存数据
    cout <<"*p:"<< * p << endl;
    cout <<"*pa:"<< * pa << endl;

    // 修改*p=100后,普通变量的值也为100,*pa的值也为100
    *p = 100;//将p地址的内存数据修改为100,因此,普通变量a,*pa的内存数据也是a
    cout << *p << endl;
    cout << *pa << endl;
    cout << a << endl;

    //容易出错的地方,指针如果没有初始化,不能使用
   /* int* p1;
    int* p2;
    cout << p1 << "  " << p2 << endl;*/

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

猜你喜欢

转载自blog.csdn.net/b1265338177/article/details/142815678