【问题标题】:What does the asterisk in C do? [duplicate]C中的星号有什么作用? [复制]
【发布时间】:2016-03-21 07:57:29
【问题描述】:

C 中的 * 是什么意思?我看到它在声明 char 或 FILE 变量时使用 (char = *test) 这如何改变变量的行为方式?

【问题讨论】:

  • 我不明白反对意见。对于刚刚学习 C 的人来说,与“C 中的指针:何时使用 ...”相比,这是一个更相关的问题,因为后者暗示您已经了解指针。

标签: c


【解决方案1】:

它取消引用一个指针:

*ptr = 42; // access the value that ptr points to, and set it to 42

或者它声明一个指针:

int* ptr; // the type of ptr is pointer to int

【讨论】:

  • 同理,*p=42;意味着,您将 42 分配给 p,如果 p 不指向任何地方,这是错误的。
  • 不,*p = 42 不分配给p,它分配给*p(即p 指向的东西)。是的,如果p 没有指向有效内存,那是未定义的行为。
  • 打错字了,我是用手机写的...我的意思是 *p :)
【解决方案2】:

这种*被称为“间接运算符”,*test的意思是“从指针test指向的地方获取数据”。

char 保留用作关键字,因此除非将 char 定义为宏,否则 char = *test 不会编译。

【讨论】:

  • 精确。很好的答案。
  • 谢谢!我的意思是 (char *test) :P
  • 这种类型的星号用于声明一个指针,而不是用于取消引用。
猜你喜欢
  • 2019-09-19
  • 2011-06-01
  • 2018-02-02
  • 2018-11-21
  • 1970-01-01
  • 2011-05-19
  • 2010-12-09
  • 2021-09-21
相关资源
最近更新 更多