我有一个问题,涉及调用一个带有 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/