*&p 是指针的引用,还是引用的指针,有关内存的分配

hzhxxx 2011-03-25 05:20:14
rt,

void my_alloc(char *&p)
{
p = new char[100];
}

void my_alloc(char **p)
{
*p = new char[100];
}

void my_allocp(char *p)
{
p = new char[100];
}

int main(int argc,char *argv[])
{
char *p = 0;
my_alloc(p);
memset(p,0,100);
strcpy(p,"sssssss");
std::cout<<p<<endl;
delete []p;
p = 0;

int a = 10;
int &b = a;
b = 100;

my_alloc(&p);
memset(p,0,100);
strcpy(p,"sssssss");
std::cout<<p<<endl;
delete []p;
p = 0;
}
...全文
355 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhxxx 2011-03-27
  • 打赏
  • 举报
回复

今天回去看可一下 BS 的 C++ program language,发现自己原来理解有错误;

int a = 0;
int &b = a;
int *p = &b;
p 并不是指向a的引用b 的指针,实际上p还是指向了a。
其实,根本不可能存在 指向引用的指针.

里面的一句话:

实际上,根本就没有能操作引用的运算符操作.


lire1213 2011-03-25
  • 打赏
  • 举报
回复
左结合,指针的引用
purewqk 2011-03-25
  • 打赏
  • 举报
回复
指针的引用...
pathuang68 2011-03-25
  • 打赏
  • 举报
回复
指针的引用。
应用的指针是非法的。

请看:

指针和引用的声明方式:
声明指针: char* pc;
声明引用: char c = 'A'
char& rc = c;

它们的区别:
①从现象上看,指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。这句话可以理解为:指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变。
②从内存分配上看,程序为指针变量分配内存区域,而不为引用分配内存区域,因为引用声明时必须初始化,从而指向一个已经存在的对象。引用不能指向空值。
③ 从编译上看,程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。这是使用指针不安全而使用引用安全的主要原因。从某种意义上来说引用可以被认为是不能改变的指针。
④不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
⑤理论上,对于指针的级数没有限制,但是引用只能是一级。如下:
int** p1; // 合法。指向指针的指针
int*& p2; // 合法。指向指针的引用
int&* p3; // 非法。指向引用的指针是非法的
int&& p4; // 非法。指向引用的引用是非法的
注意上述读法是从左到右。
sghdls 2011-03-25
  • 打赏
  • 举报
回复

指针的引用

char *cp = "abc";
char *&p = cp;
cout<<p<<endl;


p是指针的引用, 是指针cp的同义词
hzhxxx 2011-03-25
  • 打赏
  • 举报
回复

void freePtr2(int*& p2)

{

//未释放内存前 -> p2 Address : 0012FEC8 p2 value : 003429B8,p2是一个指针的引用,即引用指向指针,记住引用的特点:对引用的对象直接操作。所以它的地址和值与栈外的main()函数中,p2的值是同一个。

delete p2; //对p2所引用的指针进行释放内存,即:系统回收main()函数中 p2的值 003429B8 地址处的内存。

p2 = NULL;//对main()函数中p2的指针赋以NULL值。

//释放内存后 -> p2 Address : 0012FEC8 p2 value : 00000000,由于操作的对象都是main()函数中的p2,所以它将应用到原变量中。

}
hzhxxx 2011-03-25
  • 打赏
  • 举报
回复

int a = 10;
int &b = a;
b = 100;
int * pp = &b;
*pp = 101;

实际上,
&a
pp
b
指向了同一个地址,同样的道理

*&p 指针的引用和引用的指针,实际是一样的。
个人认为,不知道是读作引用的指针好,还是指针的引用好....



CyberLogix 2011-03-25
  • 打赏
  • 举报
回复
是指针的引用
witwolf 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hzhxxx 的回复:]
int a = 10;
int &b = a;
b = 100;
int * pp = &b;
*pp = 101;

指向引用的指针也是有的,也是可以的。
[/Quote]
int *pp=&b;
&是取址的意思
把b的地址赋给pp
也就是pp指向b
hzhxxx 2011-03-25
  • 打赏
  • 举报
回复

int a = 10;
int &b = a;
b = 100;
int * pp = &b;
*pp = 101;

指向引用的指针也是有的,也是可以的。
hzhxxx 2011-03-25
  • 打赏
  • 举报
回复

*& 都是右边结合的,为什么不是引用的指针呢???
pengzhixi 2011-03-25
  • 打赏
  • 举报
回复
是指针的引用。 另外也不可能有指针指向一个引用的。
justkk 2011-03-25
  • 打赏
  • 举报
回复
指针的引用
witwolf 2011-03-25
  • 打赏
  • 举报
回复
指针的引用
可以看成
int* &p
内容概要:WiFiSupply斯普莱WFS7000BI是一款高性能、电信工业级的室外型大功率无线基站,支持5.8GHz全频段(4920-6100MHz),基于MIMO 2T2R架构,最大发射功率达30dBm/1000mw,无线带宽最高300Mbps,点对点实际吞吐量超过150Mbps,支持TDMA时分多址技术,通信延迟≤1ms,具备强抗干扰能力和超远传输距离(桥接可达150公里以上)。设备集成16dBi双极化扇区天线,支持快速无缝漫游、多SSID、VLAN、QoS、VPN、防火墙、巨量安全隧道等多种网络功能,采用IP68防护等级和宽温设计(-45~85℃),具备防浪涌、防静电、电磁屏蔽等工业级防护特性,适用于复杂环境下的无线桥接与覆盖。支持胖瘦AP模式、本地及云端管理,并提供API接口实现第三方平台集成。; 适合人群:从事工业无线网络建设、系统集成、智能交通、智慧物流等领域的网络工程师、技术负责人及项目实施人员。; 使用场景及目标:适用于智慧交通、工业4.0、AMR/AGV小车组网、无人机遥控、车载船载视频传输、驾驶员考试系统、森林防火监控等对稳定性、低延迟、远距离通信要求高的室内外无线通信场景,目标是构建高可靠、高安全、长距离的无线网络传输系统。; 阅读建议:本文档技术参数详实,建议结合具体项目需求重点查阅频段、功率、组网模式、防护等级及管理方式等内容,便于选型与部署。
内容概要:WiFiSupply斯普莱WFS7000-52AX5是一款高性能、高负载型工业级双射频无线AP基站,支持2.4G和5.8G双频段WiFi6(802.11ax)标准,采用OFDMA、MIMO 4T4R架构及射频合路技术,实现最大1974Mbps的双频合并带宽。设备具备29dBm高发射功率、-96dBm高接收灵敏度,支持Fast Roaming快速漫游(切换延迟≤30ms)、多链路聚合、主备链路备份、巨量安全隧道等核心技术,保障低延迟、零丢包的稳定通信。配备5个千兆网口(含1个2.5G口)、支持POE/DC/端子多种供电方式,具备IP54防护、-45~85℃宽温运行、防浪涌防静电等工业级设计,适用于复杂恶劣环境。支持胖瘦一体模式、云端/本地/图形化多方式管理,并提供API接口便于第三方平台集成。; 适合人群:工业自动化、智能制造、智慧物流等领域中从事无线网络部署与运维的工程师和技术人员,具备基本网络知识和工业通信需求的专业用户。; 使用场景及目标:①用于AMR/AGV/RGV小车、无人叉车、穿梭车、天车、堆垛机等移动设备的无线联网;②满足无人机遥控、车载、船载、火车视频传输、分拣机PLC控制等高移动性、高可靠性场景的无线桥接与覆盖需求;③实现工业4.0环境下大规模终端接入、无缝漫游、安全传输的无线网络建设。; 阅读建议:本文档技术参数详尽,建议结合实际部署场景重点关注设备的射频性能、漫游切换、供电安装方式及管理功能,以便充分发挥其在高负载、强干扰工业环境下的优势。
内容概要:本文提出了一种基于混沌系统与DNA编码的彩色图像加密解密方案,旨在提升图像传输的安全性与抗干扰能力。通过结合混沌系统的初值敏感性、伪随机性和遍历性,以及DNA编码的高维信息存储与并行处理优势,实现对彩色图像RGB三通道的多层级加密。方案涵盖图像预处理、混沌序列生成、像素置乱、DNA编码扩散和通道融合等关键步骤,构建了复杂的双重混淆扩散机制。同时,系统开展了抗噪声与抗裁剪性能分析,验证了算法在高斯噪声、椒盐噪声干扰及不同面积、位置裁剪下的鲁棒性,结果表明解密图像仍能保持主体结构与核心信息的完整性。; 适合人群:具备一定信息安全与图像处理基础知识,从事信息隐藏、多媒体安全或密码学相关研究的研究生及科研人员。; 使用场景及目标:①应用于数字图像的安全传输与存储,如医疗影像、军事通信等高安全需求领域;②用于研究图像加密算法的抗攻击能力与鲁棒性机制;③为混沌系统与生物编码技术在信息安全中的融合应用提供理论支持与实践参考。; 阅读建议:建议结合Matlab代码实现对加密流程进行仿真复现,重点关注混沌参数设置、DNA编码规则选择对加密效果的影响,并通过添加不同类型与强度的噪声、裁剪攻击来测试算法鲁棒性,深入理解其安全机制与优化方向。

65,214

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧