【无标题】

指针

认识指针
指针是c,c++语言的一个核心特色,指针也就是内存地址指针变量是用来存放内存地址的变量,指针以一种统一方式,对不同的数据结构中的元素产生引用。同一cpu架构下,不同类型的指针变量所占用的存储单元长度是相同的,比如64位cpu指针变量的大小8个字节,32位cpu的指针变量大小为4个字节。

理解指针:
1.每个指针都对应一个类型。这个类型表明该指针指向的是哪一类对象。

int * ip;
char **cpp;

变量ip是一个指向int类型对象的指针,而变量cpp是一个指向的对象类型本身就是一个char 类型的指针,通常如果对象类型为T,那么指针的类型为T *。特殊的void * 类型代表通用指针。比如说malloc函数访回一个通用指针,然后通过强制类型转换或赋值操作那样的隐式类型转换,将它转换成一个有类型的指针。
注意:指针类型只是c语言提供的一种抽象,帮助程序员避免寻址错误,对于机器代码而言,并没有类型的概念。

2.每个指针都有一个值。这个值是某个指定类型的对象的地址。特殊的NULL(0)值表示该指针没有指向任何地址。

3.将指针从一种类型强制转换为另一种类型,只改变它的类型,而不改变它的值。强制类型转换的一个效果是改变指针运算的伸缩。如char * 的值为p,(int *)p +7计算为p+28,int *(p+7)计算的就是p+7。

**4指针也可以指向函数。**这提供了一个很强大的存储向代码传递引用的功能,这些引用可以被程序的某个其他部分调用,比如,

下面有这样一个函数
int fun(int x,int *p);
//然后声明一个指针fp,将它赋值为这个函数
int (*fp)(int x,int *p);
fp=fun;
//然后用指针来调用这个函数,
int y=1;
int result=fp(2,&y);

函数指针的值是该函数机器代码表示中第一条指令的地址。
5.指针变量的运算

指针变量加减一个整数
例如某种类型指针p可以p++,p–,p+i等

指针变量相减
如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数。
注意:指针变量相加无实际意义。
指针变量比较
如果两个指针变量指向同一个数组的元素,则两个指针变量可以进行比较。指向前面元素的指针变量小于后面元素的指针变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值