博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于函数的引用和值拷贝
阅读量:6656 次
发布时间:2019-06-25

本文共 969 字,大约阅读时间需要 3 分钟。

先从例子说起  15:48:56

关于函数引用的例子

1 #include
2 3 struct HString 4 { 5 char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL 6 int length; // 串长度 7 }; 8 9 void StrPrint(HString T) // 输出T字符串10 {11 int i;12 for(i=0;i

1、上边的例子中在代码的第18行中HString & T,此处加取地址符表示对 函数的引用。此时系统不会分配地址空间,只是在原来字符串的T引用了另一个名字,构成同一个内存区域有了两个名称,此时引用中改变内存区域中的值,输出内存区域的值会改变。输出结果会如下,会是初始化后的字符串值:

运行结果会输出:  hhhhh

                        Press any key to continue_

 

关于函数的值拷贝的例子

1   2 #include
3 struct HString 4 { 5 char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL 6 int length; // 串长度 7 }; 8 9 void StrPrint(HString T) // 输出T字符串10 { 11 int i;12 for(i=0;i

 

 2、上述例子中参看函数的值拷贝,与上边函数引用例子所不同的是第17行代码处HString T,此处是值拷贝。通过void Initstring(HString T)函数后,会在内存中重新分配一段内存空间来存储这段字符串

”hhhhh"。在运行主函数时,运行完28行此函数时,字符串会分配在系统分配的内存中,相当于一个副本,函数运行完时,系统为这个函数分配的内存会收回,这段字符串"hhhhh",可能就不存在了,因此原来分配内存空间中的T字符串"asdf"就不会改变。所以系统中输出字符串的T结果是如下:

 运行结果会输出: asdf   

                        Press any key to continue_

 

转载于:https://www.cnblogs.com/huihuidai/p/4542140.html

你可能感兴趣的文章
I盘显示无法访问数据错误(循环冗余检查),里面的资料怎么恢复
查看>>
PHP、MySQL和JavaScript学习手册笔记(二)
查看>>
我的友情链接
查看>>
J2EE 排序算法(一)
查看>>
PATH、cp命令、mv、文档查看命令
查看>>
android app 用什么语言开发的
查看>>
struts2.0中struts.xml配置文件详解
查看>>
Java内部类和匿名类
查看>>
nv sdk: transparency with multisampling笔记
查看>>
傲天AC EAG误配置导致Portal推送失败案例
查看>>
自制简易linux系统
查看>>
我的友情链接
查看>>
诺基亚5130XM手机上网设置
查看>>
Mybatis-Plus 之BaseMapper 方法详解
查看>>
学H3C的认证要注意的几个事情
查看>>
【sql】连续出现至少3次的数 Consecutive Numbers
查看>>
交替取值判断第一个人能否赢过第二个人 Predict the Winner
查看>>
我的友情链接
查看>>
nginx安装lua/replace-filter-nginx-module
查看>>
图像模式识别 (二)
查看>>