提问人:ScoutRr 提问时间:11/2/2023 最后编辑:chqrlieScoutRr 更新时间:11/2/2023 访问量:75
取消引用运算符何时有用?[复制]
When is the dereferencing operator useful? [duplicate]
问:
我是一个新手 c-coder,所以这可能有一个非常简单的答案。我了解指针和取消引用运算符的功能,但我不确定它们何时真正有用?
基本示例:
int x = 10;
int *p;
p = &x;
printf(" x = %d", *p);
printf(" x = %d", x);
// both print out: x = 10
什么时候取消引用指针比直接寻址变量更有效?努力寻找好的例子(我能理解)在线自动取款机,我感谢任何帮助。
答:
1赞
Barmar
11/2/2023
#1
指针通常用于需要根据动态条件指向不同变量的情况。
例如,这里有一个变量选择是随机的示例。
int x = 10;
int y = 20;
int *p;
if (rand() < 0.5) {
p = &x;
} else {
p = &y;
}
printf("Chosen value = %d", *p);
0赞
SoronelHaetir
11/2/2023
#2
在实际代码中,一元 * 运算符有用的时间是当您获得指向某项内容的指针到指针时。在这种情况下,通常需要显式取消引用第一级指针才能访问第二级指针(即使第二级是指向结构的指针,并且您使用 -> member-access 运算符)。
struct foo
{
int x;
}
...
struct foo ** ptr = ...;
(*ptr)->x = 1;
请注意,“(*ptr)->x”中的括号是必需的,因为 -> 的优先级高于 *,因此如果没有它,将被解析为 *(ptr->x) = 1;并且类型检查失败。
评论
x
*p
x
malloc