“*”在各种指针场景中是啥意思?
Posted
技术标签:
【中文标题】“*”在各种指针场景中是啥意思?【英文标题】:What does the "*" mean in various pointer scenarios?“*”在各种指针场景中是什么意思? 【发布时间】:2020-10-24 15:24:11 【问题描述】:我知道 * 被广泛用作乘法运算符,但它可以用于更多用途。 例如:
int number = 5;
int* pointer = &number;
在这个例子中,一个 int 指针被声明并使用 * 语法定义到变量号的 RAM 地址值。现在,如果我们想显示变量“number”的 RAM 地址值 我们将不得不再次使用“*”。像这样:
int pointer_value = *pointer;
现在我们再次使用 * 语法,但在 int 变量“pointer_value”的定义中。这将显示RAM地址的值指向变量“number”的值。
现在我的问题是:“*”主要用于什么,我看到了很多这样的例子:
const char* word;
等等。等等。“*”可以用来混淆我的许多机会。谁能解释一下?
【问题讨论】:
取决于你在哪里使用它;在int pointer_value = *pointer;
的示例中,*
用于取消引用 指针。简而言之,上下文很重要。
【参考方案1】:
从语法上讲,声明是int *pointer
,而不是int* pointer
,*
在声明和表达式中的含义基本相同。
在表达式中,*pointer
使用其内存地址引用某个对象。
int *pointer
之类的声明意味着*pointer
将引用int
。由于*pointer
指的是int
,这意味着pointer
是指向int
的指针。这将在here 和here 进一步解释。
在表达式中,当*
作为一元运算符出现时(后面紧跟一个操作数,前面没有操作数),它是间接运算符,意思是使用操作数作为地址来引用对象那个地址。
当*
作为二元运算符出现时(其前有一个操作数,后有一个操作数),它是乘法运算符。
【讨论】:
【参考方案2】:这个“*”是星号,如果你想打印num的值你打印*pointer。 如果要打印到地址,则打印指针或 &num 打印 num 的地址。如果要打印地址指针,请打印 &pointer。
【讨论】:
以上是关于“*”在各种指针场景中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章