相关疑难解决方法(0)

使用指针交换对象

我正在尝试交换对象以解决使用void指针交换对象的作业问题.我的功能声明必须是:

void swap(void *a, void *b, size_t size);
Run Code Online (Sandbox Code Playgroud)

我不是在寻找确切的代码如何做到这一点我可以自己解决,但我不确定我是否理解正确.我发现有一个问题是:

void *temp;
temp = a;
a = b;
b = temp;
Run Code Online (Sandbox Code Playgroud)

只更改指针指向的内容.那是对的吗?如果它是正确的,为什么交换指针实际上不会改变*a和*b之间的内容.因为如果你的指针指向不同的东西,你不能取消引用它,现在对象会有所不同吗?

同样,只需切换如下值:

void *temp;
*temp = *a;
*a = *b;
*b = *temp;
Run Code Online (Sandbox Code Playgroud)

也不正确,我不知道为什么.因为在我看来,内容是切换的.

交换对象是否意味着完全交换内存和指针指向的值?

因此我似乎必须使用malloc为我的交换分配足够的空间.如果我为一个对象分配足够的内存,假设它们的大小相同,我真的不知道它与上面的其他两种方法有什么不同.

void *temp = malloc(sizeof(pa));
// check for null pointer
temp = a;
// do something I'm not sure of since I don't quite get how allocating space is any 
// different than the two above methods???
Run Code Online (Sandbox Code Playgroud)

谢谢!

c pointers

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

pointers ×1