C/C++语言中的指针与数组(二)

书接上回,上一节给大家讲讲什么是数组以及数组的定义。今天接着跟大家谈谈什么是指针以及指针的定义。后面我会逐渐的把数组的使用、指针的使用以及一些使用的技巧、应用的场景、常见算法跟大家一起分享。

一、什么是指针

  要想理解什么是指针,首先我们要树立的一个概念就是:指针就是一个变量(也就是内存中的小格子:内存空间)

注意:这里很多人可能会反驳我说:指针不是存放变量地址的吗?怎么成了变量了。如果你也这样理解的话。那你永远不能真正理解数组。既然指针是变量。也就是一块内存空间。那它跟普通变量有什么区别呢?他们的核心区别就是:

普通变量这个内存空间(小格子)里放的是一个普通数据。比如:(整数型12)、(浮点型123.12)、(字符型‘a’)等。

指针变量这个内存空间(小格子)里放的是一个16进制的地址数据。比如:0x00402FE2 。而这个地址就是存放普通变量的内存地址。

综上所述:指针其实就是一个特殊的变量而已。既然是一个特殊的变量。那大家是不是觉得好理解多了呢。

二、指针的定义

1、一级指针

 

  int* p=NULL; //  表示这个指针变量P存放的是一个整形变量的地址。并把这个指针初始化为空。

  int x=23;//定义一个整形变量

p=&x;//给指针变量赋值。把普通变量x的地址赋给了P

 

注意:有很多初学者容易出现赋值类型不匹配的错误。比如:搞混  p=x; 还是 p=&x,这里我给大家讲一个技巧。你学会了以后。你就不会出现这个错误了。

“ = ”我们大家都知道是一个赋值符号,这个符号有个定式就是:赋值符号两边的数据类型必须一致。 大家一定要记住。写赋值语句的时候一定要先看看两边的数据类型是不是一致。如果不一致就要考虑是不是写错了。或者需要强制类型转换。由于赋值符号的运算顺序是:把右值赋给左值。所以我们只要关注:右值类型是不是跟左值一致就行了。

 

2、二级指针

 int **pp=NULL;

int *p=NULL;

pp=&p;

从以上语句中可以看出二级指针其实就是 存放指针变量的地址 的一个变量。

 

3、多级指针

int ***ppp=NULL;

 int **pp=NULL;

int *p=NULL;

pp=&p;

ppp=&pp;

 

以上就是指针的基本概念。以及指针的基本定义。你理解了吗?

 未完待续。。。。

 

 

 

 

 

 

posted on 2010-10-22 18:04  IT老杨  阅读(173)  评论(0编辑  收藏  举报