您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 指针 >

如何让函数修改传入的指针

发布时间:2019-07-14 02:02 来源:未知 编辑:admin

  还有就是定义char *p,字符串 使用之前必须要malloc吗? 还有什么好办法吗?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部不要以为用指针做参数就是地址传递方式,因为你主函数中的p是指针,要想在函数中改变主函数中指针的值,应该以指针的指针的方式传递参数:

  另外,在定义char* p字符串,在使用之前并不是必须要用malloc(),你的程序就是一个很好的例子,因为Hello是一个字符串常量,所有的常量(包括其它数据类型的常量),编译器会自动为它们分配存储空间,不用你来手动申请存储空间,而且你的做法也是导致内存泄漏的典型例子,当你使用char *p=(char *)malloc(32);时系统就会为你分配32个字节,并且使p指向这个存储空间,但当你p=Hello;时,p就会指向Hello这个存储空间,p就不再指向那个32个字节的存储空间了,这时你的程序就再也不能利用这个32个字节的存储空间了。避免内存泄漏的做法可以是:

  char* ch = p;//如果觉得这个空间还有用,可以把它交给别人帮你保管,这样这个空间就不会变成游魂野鬼了。

  展开全部不要以为用指针做参数就是地址传递方式,因为你主函数中的p是指针,要想在函数中改变主函数中指针的值,应该以指针的指针的方式传递参数:

  另外,在定义char* p字符串,在使用之前并不是必须要用malloc(),你的程序就是一个很好的例子,因为Hello是一个字符串常量,所有的常量(包括其它数据类型的常量),编译器会自动为它们分配存储空间,不用你来手动申请存储空间,而且你的做法也是导致内存泄漏的典型例子,当你使用char *p=(char *)malloc(32);时系统就会为你分配32个字节,并且使p指向这个存储空间,但当你p=Hello;时,p就会指向Hello这个存储空间,p就不再指向那个32个字节的存储空间了,这时你的程序就再也不能利用这个32个字节的存储空间了。避免内存泄漏的做法可以是:

  char* ch = p;//如果觉得这个空间还有用,可以把它交给别人帮你保管,这样这个空间就不会变成游魂野鬼了。

  展开全部C 语言跟 C++ 是不同的。最大的不同之处在于,它不会象变魔法般的在后台以程序员不知道的方式添加一些奇奇怪怪的东西。——这可能是好事,也可能是坏事,取决于你在什么领域进行编程。

  一个数组就是一串序列,它的地址以及存储的内容都一目了然在那里了,没有任何地方记录了有关其「长度」的信息。所以你自然没有办法知道它的长度。信息都保存在内存中,你能获取一个信息就意味着这个信息或者用来推算这个信息的相关信息必须被保存在内存中的某个地方,你能知道一个数组的长度就必须有某个地方保存了这个数组的长度信息。

  题主要的是有某个「魔法」的方法知道一个指针指向的内容的长度,但如果你根本没有在任何地方保存它的长度,没有人知道,又如何能获取?

  所以,传递长度本质上来说就这么几个办法,1,单独传一个长度参数,(C方式),或者对数据内容进行约定(C字符串方式),2,把数据包装成一个结构,结构中有一个字段是长度,另外一个字段是数据内容,同时在添加一些其他的字段作为控制信息等(C++方式)。3,其他各种黑科技,使用这些黑科技一般会造成程序不可移植,只能适用于特定场合。

http://lemadras.com/zhizhen/257.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有