gpt4 book ai didi

c++ - 使用指针交换两个变量

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:06 25 4
gpt4 key购买 nike

我正在尝试通过引用使用指针(特别是空指针)编写交换函数,但我的代码无法正常工作。这是我的代码:

void swap(void *p1,void *p2) 
{
int temp;
temp=*((int*)p2);
p2=p1;
p1=&temp;
}

int main()
{
int i=4;
int j=5;
cout<<i<<j<<endl;
swap(&i,&j);
cout<<i<<j<<endl;
return 0;
}

我哪里错了?

最佳答案

该代码不起作用,因为您没有取消对分配的指针的引用。应该是

*((int*)p2)=*((int*)p1);
*((int*)p1)=temp;

请注意,您假设 void* 指向 int,但显然情况并非总是如此。从本质上讲,您不妨将 void* 替换为 int*,并摆脱强制转换。

API 的更一般情况应如下所示:

void swap(void *p1,void *p2, size_t sz)

在内部,API 应该分配一个大小为 sz 的缓冲区,在其中创建一个 memcpy,然后再次使用 memcpy 进行交换>.

关于c++ - 使用指针交换两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com