首页 > 代码库 > 小话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]的地址,自减同理。
需要注意的是,当指针指向数组最后一个元素后,再进行自加运算的话就会发生数组越界的情况,因为所指向的地址未知,所以发生的情况也未知。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。