首页 > 代码库 > 小话C指针

小话C指针

        指针在c语言中占据着重要地位,指针跟int、char、double等类似,也是一中数据类型,其特殊之处在于int等基本类型变量存放的是内容,指针变量存放的是地址。内存被划分成许多但愿区域,这些单元所在的”单元号“即为地址,指针的定义方式为:

数据类型  *变量名;

Eg:int  *pNum;

其中,*表示pNum是一个指针型变量,int是指针变量的类型,代表它只能指向int型变量。

指针还有个运算符是”&“,名为:取地址符。故名思义,取地址用的,取的就是变量所在的地址。

如:int  a = 0,pN;

pN = &a;

此时就可以通过指针pN间接操作变量a了。

那怎样能操作a的数值呢?这时需要用到取值符“*”,这里的*跟上面的那个*意义不同,上面的*表示这是一个指针变量,而这里*表示取指针变量所指变量的值。

如:int  a,b = 1,*pN;

pN = b;

a = *pN;

此时a的值为1。

指针也可以进行自增或自减运算,由于指针存放的是“单元号”(地址),那当指针自加1后,它指向的就是下一个“单元号”了。

如:int *pN;

int a[3] = {1,2,3};

pN = a;

pN++;

当数组a直接赋值给pN后,pN指向的是数组的首地址,也就是a[0]的地址,当pN++后,pN指向下一个地址,也就是a[1]的地址,自减同理。

需要注意的是,当指针指向数组最后一个元素后,再进行自加运算的话就会发生数组越界的情况,因为所指向的地址未知,所以发生的情况也未知。