指针与*存储空间(1)

1.我们平时定义普通变量:

typename variable_name = variable_value;

语句申明了变量值得类型 变量名称 ,还让程序为值分配了内存

此处定义变量: 值是指定量 存储地址为派生量(指定一个要存储的值,分配一个*空间用于存储这个值)

#include<iostream>

int main()
{
	using namespace std;
	// 定义一个简单的变量
	int var1 = 12;
	cout << var1 << endl;
	
	return 0;
} 

获取地址(使用地址运算符 &)

#include<iostream>

int main()
{
	using namespace std;
	// 定义简单的变量
	int var1 = 12;
	double var2 = 12.0;

	// 输出变量值与地址
	cout << "var1 value = " << var1;
	cout << "  var1 address = " << &var1 << endl;

	cout << "var2 value = " << var2;
	cout << "  var2 address = " << &var2 << endl;


	return 0;
} 

输出: 

指针与*存储空间(1)

 

 

2.指针

指针是一个特殊的变量,存储的值是地址,而不是值本身;

typename*  ptr_name = variable_address;

此处定义变量: 地址是指定量 值为派生量(指定一个要存储的值,分配一个*空间用于存储这个值)

指针用于存储值的地址,所以指针名表示的是地址;用解除引用运算符(*) 来获得的该地址处的值。

#include<iostream>
#include<stdlib.h>

int main()
{
	using namespace std;
	int var1 = 12;	//定义简单变量
	int* ptr_var1 = &var1;	//定义指针

	// 输出简单变量值与地址
	cout << "var1 value = " << var1 << endl;
	cout << "var1 address = " << &var1 << endl << endl;

	// 输出var1的指针的值与指向地址存储的值
	cout << "ptr_var1 value = " << ptr_var1 << endl;
	cout << "*ptr_var1 value = " << *ptr_var1 << endl << endl;

	// 改变指针指向变量的值 输出结果
	*ptr_var1 = *ptr_var1 + 1;
	cout << "after change ptr_var1 value = " << ptr_var1 << endl;
	cout << "after change *ptr_var1 value = " << *ptr_var1 << endl << endl;

	system("pause");
	return 0;
}

结果:

指针与*存储空间(1)

示意图:

 指针与*存储空间(1)