博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关指针的一个小问题——传参和修改
阅读量:6531 次
发布时间:2019-06-24

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

假如定义一个函数,只有一个指针做参数,如果我们希望通过这个参数获取返回值,怎么来写这个函数?

一般我们直接想到的会是:

void GetMemory(char *p) {     p = new char[20]; }

然后进行调用:

Void Test() {     char * str = NULL;     GetMemory(str);     strcpy(str,"hello,world");     cout<
<

这种调用是无效的,很有可能会出现乱码,在函数内对形参进行修改并不能真正地修改形参的值,问题就出在GetMemory()函数的形参。

正确的定义方式是:

void GetMemory(char *&p) {     p = new char[20]; }

这样的话,在函数内对指针分配内存的操作即能正常进行,最后调用Test()函数也能成功输出”hello,world”。这又要说回指针和引用的问题。

这两者之间区别的讨论网上千千万万,园里也看到有人写得很好的一篇:

所以就不再多做介绍了,那篇博文最后一句话总结得很好:

“函数的参数进行值拷贝,即使传的是指针,也的对指针(即指针里存的地址)的拷贝。”

不过这位仁兄到最后也是没有详细讲解二维指针的问题,其实对于二维指针(或者指针数组)我也只是懂一点。仅仅是知道怎么使用,但是对于它为什么能够成功地从函数中返回参数感到非常奇怪。希望高手看到这篇渣文能够给予指教。。。。。。

转载于:https://www.cnblogs.com/nerohwang/p/3481725.html

你可能感兴趣的文章
葡萄城报表模板库更新:新增6个行业、50张经典报表模板
查看>>
Tomcat中JVM内存溢出及合理配置
查看>>
关于条件测试及exit命令
查看>>
linux增加路由命令
查看>>
bash的环境配置文件
查看>>
zookeeper 集群
查看>>
2016中国大数据市场研究报告
查看>>
vm—win7
查看>>
一个爬虫工程师的梦
查看>>
python导入mysql
查看>>
git 实践(一) pull的使用
查看>>
一文读懂JavaScript和ECMAScript的区别
查看>>
寿光洪灾面前,这群淘宝上的陌生人做了件小事
查看>>
Linux下的通配符和特殊符号用法详解
查看>>
精选前端面试题之Javascript(20道)
查看>>
android 使用webview加载网页问题
查看>>
css中的常见布局面试题
查看>>
基于 Alpine 基础镜像构建 H2 Database 镜像
查看>>
web框架flask(8)——关注者,联系人和好友
查看>>
opengl纯动态管线备忘
查看>>