c++ - 如何正确地将指针传递给函数?
问题描述
我似乎无法将指针传递给内存地址。我认为下面的代码会将ptr
指向的内存地址传递给 my func()
,然后当我打印出其中的地址时,func()
它会显示与 inside 相同的地址ptr
,main()
但这不是我所看到的。p
的地址与 的地址不同ptr
。
如何正确传递指向函数的指针?
#include <iostream>
using namespace std;
void func(int* p)
{
printf("p address: %p\r\n", &p);
}
int main()
{
int* ptr;
memset(&ptr, 0, sizeof(int));
printf("ptr address: %p\r\n", &ptr);
func(ptr);
}
解决方案
在此声明中:
void func(int* p)
该变量p
确实是 的副本ptr
,因此它们具有不同的内存地址。此处适用与int
参数相同的规则。在这种情况下,指针没有什么特别之处。不要被指向的值是相同的事实混淆,即*p
和*ptr
是相同的。对象p
和ptr
仍然是彼此的副本,并且具有不同的地址。
如果您希望参数p
与 具有相同的地址ptr
,请通过引用接受它:
void func(int* &p)
当然,它们仍然指向同一个地址。
推荐阅读
- excel - VBA - 日期时间字符串替换/替换
- sql - 如何在postgresql的查询中一起转换列和函数之间的使用
- r - 总结选定的行重复项
- conemu - 如何在 Cmder (ConEmu) 的当前选项卡中执行命令
- android - ImageView drawable 未在 MarshMallow 上显示
- vb.net - 每次显示或加载表单时用当前日期填充一列
- c# - 如何将图像作为字节数组从 Angular 9 发送到 C# Web API Core,就像对象的属性一样?带有图像的 CRUD 客户端应用程序
- javascript - 获取第三个文本内容
里面的元素
元素 - git - Git:定期将回购复制到公司外部无法访问的另一个回购
- python - 如何使用 Python,Beautifulsoup 仅抓取包含在 DIV 元素中的印地语内容,没有任何类或 id?