1.3 c++数据的复合类型及其使用(二)

1 指针

指针是一个变量,其存储的是值的地址。为找到常规变量的地址,需对变量应用地址运算,就可获得他的位置。使用常规变量时,值是指定的量,而地址为派生量。指针的策略与之相反,将地址视为指定的量,而将值视为派生量。因此,指针名表示地址,*运算符称为间接值或解除引用运算符,将其应用指针,可以得到地址处存储的值。对指针解除引用的方法是对指针应用*或者用数值表示法,所以如ptr[0]与*ptr是一样的。

声明指针:int *ptr; 初始化指针: int a=5;ptr= &a;。注意:1)int* p1,p2;创建了一个指针p1,一个int变量p2,所以对每个指针变量名,都需要使用一个*,int*是一个复合类型,是指向int的指针。2)创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。如long *  fellow; *fellow = 199999;是一种危险的操作。没有将地址赋给fellow,那199999放在哪里?程序都将它解释为存储199999的地址,如果fellow的值恰巧为1200,计算机将数据存在地址为1200上,即使是程序代码的地址。3)不能简单地将整数赋给指针,应通过强制类型转换为数字转换为适当的地址类型

使用new来分配内存:指针最大的用处,在运行阶段分配未命名的内存以存储值。在这种情况下,只能通过指针来访问内存。在c中,可以用malloc()来分配内存,在c++中仍可以这样做,但new运算符更好。如int *pn = new int;。变量pn的值存储在栈的内存区域中,而new在堆的内存区域分配内存。

使用delete释放内存:如int *pn = new int;   ...   delete pn;使用delete时,后面加上指向内存块(只能是new分配的地址,这也是使用delete的关键)的指针。注意:1)释放pn指向

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vinkuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值