2、指针的基本概念

本文介绍了C++中变量与指针的概念。每个变量都有内存地址,通过&运算符获取。指针变量用于存储变量的内存地址,不同数据类型的指针存放相应类型变量的地址。对指针赋值即让指针指向某个变量,指针本身也占用内存,其大小在不同操作系统中有所不同。指针与基类型不匹配时,可通过强制转换处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)变量的地址

 变量是内存地址的简称,在C++中,每定义一个变量,系统就会给变量分配一块内存,内存是有地址的。

        C++用运算符&获取变量在内存中的起始地址。

        语法:&变量名

#include <iostream>
using namespace std;
int main()
{
    int a;
    char b;
    bool c;
    string d;
    cout<<"变量a的地址是:"<< (long long)&a<<endl;
    cout<<"变量b的地址是:"<< (long long)&b<<endl;
    cout<<"变量c的地址是:"<< (long long)&c<<endl;
    cout<<"变量d的地址是:"<< (long long)&d<<endl;
    //输出的是变量abcd的地址
}

2)指针变量

        指针变量简称指针,它是一种特殊的变量,专用于存放变量在内存中的起始地址。

        语法:数据类型 *变量名

        数据类型必须是合法的C++数据类型

3)对指针赋值

        不管是整形、浮点型、字符型、还是其他的数据类型的变量,它的地址都是一个十六进制数。我们用整形指针存放整形变量的地址,用字符型指针存放字符型变量的地址,用浮点型指针存放浮点型变量的地址,用自定义数据类型指针存放自定义数据类型变量的地址。

        语法:指针=&变量名

#include <iostream>
using namespace std;
int main()
{
    int a;
    char b;
    bool c;
    string d;
    int *pa=&a;
    char *pb=&b;
    bool *c=&c;
    string *d=&d;
    cout<<"变量a的地址是:"<< (long long)&a<<endl;
    cout<<"变量b的地址是:"<< (long long)&b<<endl;
    cout<<"变量c的地址是:"<< (long long)&c<<endl;
    cout<<"变量d的地址是:"<< (long long)&d<<endl;
    //输出的是变量abcd的地址
    cout<<"变量a的地址是:"<< (long long)pa<<endl;
    cout<<"变量b的地址是:"<< (long long)pb<<endl;
    cout<<"变量c的地址是:"<< (long long)pc<<endl;
    cout<<"变量d的地址是:"<< (long long)pd<<endl;
    //输出的与上面一致  
}

注意:

        对指针的赋值操作也通俗的被称为”指向某变量“,被指向的变量的数据类型称为”基类型“。

        如果指针的数据类型与基类型不符,编译会出现警告,但是可以强制转换他们的类型。

int  a;
char b;
int *pa=(int*)&b;
char *pb=(char*)&a;

4)指针占用的内存

指针也是变量,是变量就要占用内存空间

在64位的操作系统中,不管是什么类型的指针,占用的内存都是8字节。 32位是4字节。在C++中,指针是复合数据类型,复合数据类型是指基于其他类型而定义的数据类型,在程序中,int是整形数据,int*是整形指针类型,int*可以用于声明变量,可以用于sizeof运算符,可以用于数据类型的强制转换,总的来说,可以把int*当成是一种数据类型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值