C++指针变量的简单运算

本文详细解析了指针变量加1和减1的操作原理,以及数组名与指针变量之间的区别,并通过具体示例说明了如何正确理解这些概念。

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

指针变量+1和-1:
指针变量加1后,其增加的值是该指针所指向的数据类型的字节数。
    int a;
    int *p=&a;

    cout<<p<<endl<<p+1<<endl;
输出的结果是:
0x61ff18
0x61ff1c
因为int的字节是4。不一定是这两个值,但它们的差应该都是4。数组名也是如此。可以修改指针变量的值,不能修改数组名,因为数组名是常量。

数组地址:
数组名代表数组的首地址,即第一个元素的地址。但对数组名取地址时,不会被解释为其地址。
    int a[10];

    cout<<a<<endl;
    cout<<&a<<endl;

    cout<<a+1<<endl;
    cout<<&a+1<<endl;
从数值上看,a+1与&a+1相同。但从概念上看,a即(&a[0])是一个4字节内存块的地址,而&a是一个40字节内存块的地址。因此a+1是将地址加上4,而&a+1是将地址加上40。

数组名和指针变量的区别:
当一个数组名赋值给相同类型的变时,可以对这两者用数组表示法或指针表示法来访问元素。但对它们分别使用sizeof时,得到的值是不同的,尽管它们的值相同。
    int a[10];
    int *p=a;

    cout<<sizeof(a)<<endl<<sizeof(p)<<endl;
sizeof(a)得到是40,而sizeof(p)得到是4。即sizeof(a)得到的整个数组空间的大小,而sizeof(p)得到的只是该指针变量指向的某个基本数据类型的大小。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值