Pointer

Basic Pointers in Cpp

Posted by Caedmom on November 1, 2014

1. 指针的概念


  • 在计算机中,内存是由若干存储单元组成的,每个存储单元均有一个唯一的编号用于标识该存储单元,该编号称为存储单元的地址。

  • 在C++中,数据是用变量数组等形式存放在存储器中的。

  • 如int a,该语句定义了整形变量a,编译系统将为变量a分配内存单元,用于存放整数。假设编译系统为变量a分配的内存单元地址为2014,则为a分配的存储单元(首)地址2014称为变量的指针。

  • 所谓指针就是变量、数组、函数等的内存地址

  • 专门用于存放内存单元地址(即指针)的变量称为指针变量。

  • 引入指针变量的目的是提供一种对变量进行间接访问的手段。指针变量必须先说明后使用。 img


2. 代码示例


  • 运行结果 img

C++

#include 
using namespace std;

void main()
{
	int m, n, *p1 = &m, *p2 = &n, *phint = NULL;
	m = 1;
	n = 2;
	cout << "*p1=" << *p1 << ",*p2=" << *p2 << endl; //*p1为取到的内容
	cout << "p1=" << p1 << ",p2=" << p2 << endl; //p1为内存地址
	cout << "m=" << m << ",n=" << n << endl;
	cout << "phint=" << phint << endl; //空指针phint内存地址为(0x)00000000

	*p1 += 3;
	p2 = p1;
	*p2 *= 4;
	phint = p2;
	cout << "*p1=" << *p1 << ",*p2=" << *p2 << endl; 
	//p1 p2指向同一个地址,经过*p2 *= 4操作后,该内存中的数据改变了
	cout << "p1=" << p1 << ",p2=" << p2 << endl;
	cout << "m=" << m << ",n=" << n << endl;
	cout << "phint=" << phint << endl;
	system("pause");
} 
</code></pre>