指针知识(一):指针声明

由于指针可以直接引用它所指向的数值,数值是有类型的,因此在声明指针的时候要指明它所指向的数据类型

指向一个整型(int)或浮点型(float)数据的指针与指向一个字符型(char)数据的指针并不相同。

因此,声明指针的格式如下:

type * pointer_name;

这里,type 是指针所指向的数据的类型,而不是指针自己的类型。例如:

int * number;
char * character;
double * decimals;

 

 

 

 

它们是3个指针的声明,每一个指针指向一种不同数据类型。这三个指针本身其实在内存中占用同样大小的内存空间(指针的大小取决于不同的操作系统),但它们所指向的数据是不同的类型,并占用不同大小的内存空间,一个是整型int,一个是字符型char ,还有一个是浮点型float。

需要强调的一点是,在指针声明时的星号asterisk (*) 仅表示这里声明的是一个指针,不要把它和前面我们用过的引用操作符混淆,虽然那也是写成一个星号 (*)。它们只是用同一符号表示的两个不同任务。

一个简单的例子:例1

//my first pointer
#include <iostream>
using namespace std;

int main ()
{
  int firstvalue, secondvalue;
  int * mypointer;

  mypointer = &firstvalue;
  *mypointer = 10;
  mypointer = &secondvalue;
  *mypointer = 20;
  cout << "firstvalue is " << firstvalue << '\n';
  cout << "secondvalue is " << secondvalue << '\n';
  return 0;
}
输出:firstvalue is 10
secondvalue is 20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意变量firstvalue 和 secondvalue 是怎样间接被赋予数值的。首先我们使用 ampersand sign (&) 将firstvalue的地址赋给mypointer 。然后我们将10 赋给 mypointer所指向的数值,它其实指向firstvalue的地址,因此,我们间接赋予了firstvalue的数值。

为了让你了解在同一个程序中一个指针可以被用作不同的数值,我们在这个程序中用value2 和同一个指针重复了上面的过程。

一个稍复杂的例子,让你更深理解指针:例2

//second example
#include <iostream>
using namespace std;

int main ()
{
  int firstvalue = 5, secondvalue = 15;
  int * p1, * p2;

  p1 = &firstvalue;  //p1存储的是firstvalue地址
  p2 = &secondvalue; //p2存储的是secondvalue地址
  *p1 = 10;          //指针p1指向的值为10,
           //地址是firstvalue的地址,即firstvalue=10 *p2 = *p1; //secondvalue=10 p1 = p2; //p2存储的地址给p1,p1指向secondvalue *p1 = 20; //secondvalue= 20; cout << "firstvalue is " << firstvalue << '\n'; cout << "secondvalue is " << secondvalue << '\n'; return 0; }
输出:firstvalue is 10
secondvalue is 20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注释写的很清楚了,自己要多练去理解。

 

posted on 2014-03-10 23:15  guozqzzu  阅读(947)  评论(0编辑  收藏  举报