指针在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]的地址,自减同理。
需要注意的是,当指针指向数组最后一个元素后,再进行自加运算的话就会发生数组越界的情况,因为所指向的地址未知,所以发生的情况也未知。
小话C指针
时间: 2024-10-09 19:09:12