gpt4 book ai didi

c++ - 以指针为函数参数的语法解释(C++)

转载 作者:太空狗 更新时间:2023-10-29 20:59:40 25 4
gpt4 key购买 nike

我不确定我是否可以在这里问基本问题,但我开始学习 C++ 并且不了解指针语法中的一点点。

这是我的代码示例:

using namespace std;

int randomname(int *x);

int main(){

int a = 1;

int *ab;

ab = &a;

randomname(&a);

}


int randomname(int *x){

*x = 9001;

}

我的问题是关于 * 符号的。为什么在 ab = &a; 行的主函数中我不需要 *,但在 *x = 9001; 行中我需要它?我认为这两个函数的语法应该相同,但事实并非如此。谁能解释一下为什么?

最佳答案

星号 * 和符号 & 的含义根据上下文而变化。它们在表达式和声明中的含义不同:

  • * 用于声明时,它指定一个指针
  • & 用于声明时,它指定一个引用
  • * 用于表达式时,它会对其操作数执行指针取消引用
  • & 用于表达式时,它会获得其操作数的指针

一旦你理解了这些区别,你就可以分辨出来了

  1. int *ab 行是一个声明。星号将 ab 指定为指针。
  2. ab = &a; 行有一个表达式& 获取a 的指针,并将其分配给ab,它具有在其声明时指定的指针类型(如上)。
  3. *x = 9001 行也是一个表达式,使星号成为取消引用运算符。您使用星号告诉编译器赋值的目标是 x 指向的任何内容,而不是 x 本身。

关于c++ - 以指针为函数参数的语法解释(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24126526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com