C++ 指针详解(2)

本文详细介绍了C++中的指针,包括指针运算符*和&,指针的运算,指针与数组的关系,以及如何使用指针操作数组和二维数组。文中还探讨了指向指针的指针、const指针的用法,以及动态内存分配与管理,包括new运算符的使用、内存释放和悬垂指针问题。
摘要由CSDN通过智能技术生成
一、指针运算符*和 &地址运算符
eg:     y=&x;
         z = *y;
         x 的值为1000,x 的地址为55
1.&地址运算符是一元运算符,反回它的操作数的内存地址.y 将接收到地址55.
2.*指针运算符是一元运算符,它是&运算符的相反形式,*运算符能反回位于其操作数所指定的地址的变量的值.即只要*后面是地址(任何形式),*都返回地址对应的值。例中z 的值为1000,*y 把由y 所指向的内存的地址的变量x 的值赋给z。*运算符可理解为“在地址中”,则z=*y 可描术为“z 接收了在址址y 中的值。
3.其实可以把*y 当成一个变量来使用,即可以为*y 赋值等,例如*y=100;(*y)++;等,但要注意的是对*y 的操作相当于是对此指针指向的地址中的变量的操作,即对*y=100 的赋值语句,相当于是x=100,而(*y)++则相当于x++。
二、指针的运算
1.++,――运算符,假设int 型x 的地址为200,且int 型占4 个字节,定义int *p;p=&x;则p++的地址将是204,而
不是201,因为当指针p 的值增加时,它都将指向下一个int 型数据.减少时也是这样,p――则,p 的地址将是196.
2.+,-,运算符,注意两个指针不能相加.例int *p;p=&x;假设x 的地址为200,则p+9 的指针地址将是200+4*9=236,
即p 指向了从当前正指向的元素向下的第9 个元素.
3.两指针相减,同类型的一个指针减去另一个指针的值将是两个指针分开的基本类型的元素的个数.
三、指针和数组
1.在C++语言中使用没有下标的数组名会产生一个指向数组中第一个元素的指针.如 char x[20];char *p;p=x;此语句
说明将x 数组的第一个元素的地址赋给指针p. *(p+4)和x[4]两句都可以访问数组中第5 个元素,而p+4 就是指向第五个元素的指针.
2.p[i]语句相当于*(p+i)或x[i]即数组中第i+1 个元素的值
3. 指针数组的声明形式int *p[10];该语句声明了10个指针数组,每个数组中存储一个整数值地址.p[2]=&x;语句为指针变量的第
三个元素赋予x变量的地址,现在要访问x变量的值需要编写*p[2].即访问指针数组第三个元素的地址指向的变量的值.
4.以些来推二维数组。例如
#include <iostream>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值