对C++中指针和自由存储空间的理解

1.计算机程序在存储数据时必须跟踪3种基本属性。(1)信息存储在何处(2)存储的值为多少(3)存储的信息是什么类型

指针是一个变量,其存储的是值的地址,而不是值本身。如何找到常规变量的地址。只需对变量应用地址运算符(&),就可以获得它的位置;例如,如果home是一个变量,则&home是它的地址。如下实例:

#include<iostream>
using namespace std;
int main()
{
    int counts = 6;
    double cups = 4.5;
    cout<<"counts value = "<<counts<<" and counts address = "<<&counts<<endl;
    cout<<"cups value= "<<cups<<" and cups address = "<<&cups<<endl;
    return 0; 
}

用常规变量时,值是指定的量,而地址为派生量。指针策略,它是C++内存管理编程理念的核心。面向对象编程与传统的过程性编程的区别在于,OOP强调的是在运行阶段(而不是编译阶段)进行决策。运行阶段指的是程序正在运行时,编译阶段指的是编译器将程序组合起来时。处理存储数据的新策略是将地址视为指定的量,而将值视为派生量。一种特殊类型的变量,指针。用于存储值的地址。因此,指针名表示的是地址。*运算符被称为间接值(indirect value)或解除引用(dereferencing)运算符,将其应用于指针。可以得到该地址处存储的值。如下示例:

//实例2
#include<iostream>
using namesapace std;

int main()
{
	int updates = 6;//声明一个变量
	int* p_updates;//声明一个指向整数的指针
	p_updates = &updates;//把一个指向整数的指针赋值给指针
	cout << "Value : updates =" << updates;
	cout << ", *p_updates = " << *p_updates << endl;
	cout << "Address: &updates = " << &updates;
	cout << ", p_updates = " << p_updates << endl;
	*p_updates = *p_updates + 1;
	cout << "Now updates = " << updates << endl;
	updates = 10;
	cout << *p_updates << endl;
	return 0;
}
//学习观点1.通过把指针指向的值重新赋值,改变原先变量的值

输出结果如图所示:

从中可知:int变量updates和指针变量p_updates只不过是同一枚硬币的两面。变量updates表示值,并使用&运算符来获得地址;而变量p_updates表示地址,并使用*运算符来获得值。由于p_updates指向updates,因此*p_updates和updates完全等价。可以像使用int变量那样使用*p_updates。甚至可以赋值给*p_updates。这样将修改指向的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值