C/C++语言中的指针与数组(二)
时间:2010-10-22 来源:IT老杨
一、什么是指针
要想理解什么是指针,首先我们要树立的一个概念就是:指针就是一个变量(也就是内存中的小格子:内存空间)
注意:这里很多人可能会反驳我说:指针不是存放变量地址的吗?怎么成了变量了。如果你也这样理解的话。那你永远不能真正理解数组。既然指针是变量。也就是一块内存空间。那它跟普通变量有什么区别呢?他们的核心区别就是:
普通变量这个内存空间(小格子)里放的是一个普通数据。比如:(整数型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;
以上就是指针的基本概念。以及指针的基本定义。你理解了吗?
未完待续。。。。
如果有想系统学习C++这门编程语言的朋友也可以参加北京智盟培训中心的C++课程培训(http://www.witunion.com/Curriculum/feature3.html)