int *a = *(int**)_a, *b = *(int**)_b;
时间: 2024-06-25 15:00:20 浏览: 114
在这个表达式中,`int *a = *(int**)_a` 和 `int *b = *(int**)_b` 是C/C++中的指针操作,它们看起来是在间接地解引用两个指向指针的指针。具体解释如下:
1. `*(int**)` 是指针解引用,它表示将一个指向指针的指针(`int**`)所指向的内容(即另一个指针)再次解引用,得到一个 `int*` 类型的值。
2. `_a` 和 `_b` 可能是变量名或表达式,它们分别指向了 `int` 类型的指针地址。`*(int**)_a` 就是获取 `_a` 所指向的 `int**` 中的 `int*`,类似地,`*(int**)_b` 获取的是 `_b` 所指向的 `int**` 中的 `int*`。
简而言之,这个代码片段的作用是:
- 把 `_a` 和 `_b` 中的指针地址分别解引用两次,得到它们各自指向的 `int` 值的指针,并将这些新的指针赋值给 `a` 和 `b`。
相关问题:
1. 这两个表达式是如何处理指针层次的?
2. 如果 `_a` 或 `_b` 指向的是NULL,会发生什么情况?
3. 这种操作通常在哪些场景下使用?
阅读全文