c - 将指针交换为 C 中的指针

标签 c function pointers swap

我有一个问题,涉及调用一个带有 2 个指向指针的参数的函数

int main(void)
{ ...
int *ptrp = &p, *ptrq = &q;
int **ppp = &ptrp, **ppq  = &ptrq;
swap_ptr(ppp,ppq);/* &ptrp, &ptrq passed */ 
/* to swap_ptr() */
return 0;
}

void swap_ptr(int **ptrA,int **ptrB)...

我们必须交换 ptrp 和 ptrq 的值,那么这是否意味着在 swap_ptr 函数中我只使用 *ptrA 和 *ptrB 来交换它们,或者是其他指针语句?

谢谢

最佳答案

这与交换任何东西的概念相同:

void swap(int* a, int* b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

在这种情况下,您只是碰巧交换了 int* 而不是 int:

void swap(int** a, int** b)
{
    int* tmp = *a;
    *a = *b;
    *b = tmp;
}

关于c - 将指针交换为 C 中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971089/

相关文章:

c++ - 按引用返回

c - SDL 相对位置

c - 如何指向指针变量

javascript - JS : How long does it take to call a function?

只返回独特的词

c++ - 如何使用循环在 C++ 中打印指针

c - 如何解决这个意外的输出?

c - 如何使用 sscanf 读取带有继续逗号的一行 csv

java - 你能编写自己的 java 随机发生器吗?

c - 为什么 malloc(sizeof(pointer)) 有效?