黑马程序员 C语言:指针的概念

 指针的基本概念

 

  在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。

 

指针与变量

 

 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。

 

  注意:

   一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。

 

 

定义一个指针变量对指针变量的定义包括三个内容:

  1. 指针类型说明,即定义变量为一个指针变量;
  2. 指针变量名;
  3. 变量值(指针)所指向的变量的数据类型。

    其一般形式为:
    类型说明符  *变量名;
其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

 

 

  int i =3,j=6,k;   //&i = 2000

  k = i+j;

  int *i_pointer = &i;  //存谁的地址,就相当于指向谁

 

                        // i_pointer --->i

 

  注意“*”两个使用场合

  1)在定义指针变量的时候使用    int *变量名    表示这个变量是一个指针变量。

  2)*指针变量名  访问指针变量指向的那片存储空间

 

  关于指针变量的注意事项:

  1)什么类型的指针变量,只能指向同种类型的变量

  2)指针变量可以是全局,也可以是局部

 

 两个有关的运算符:

  • &:取地址运算符;
  • *:指针运算符(或称“间接访问” 运算符)。

C语言中提供了地址运算符&来表示变量的地址。其一般形式为:     &变量名; 如&a表示变量a的地址,&b表示变量b的地址。

 

  指针变量的初始化方法:

 

  1)定义的同时进行初始化

     int a=10;

     int *p = &a;

 

  2)先定义后初始化

 

     int a=10;

     int *p;

     int *q;

 

     p=&a;

     q=&a;

 

  3)如果不确定指针指向什么内容

     p = NULL;

posted on 2015-05-29 21:19  shao-IOS  阅读(123)  评论(0编辑  收藏  举报

导航