gpt4 book ai didi

c++ - 在C++中,a = 5,a(5),a {5}和a [5]有什么区别?

转载 作者:行者123 更新时间:2023-12-02 09:50:38 25 4
gpt4 key购买 nike

C++中的a = 5a(5)a{5}a[5]的语句有什么区别?

我偶尔会看到它们用于诸如在C++程序中为对象分配值之类的任何事情。它们之间有什么区别?

最佳答案

在C++中,所有这些语句之间的主要区别在于初始化(在声明一个对象时完成)和赋值的上下文。与其他语句相比,最后一条语句a[5]也完全不同。

前提:如果a是某个数据类型的对象,例如int,我们可以为a分配一个适当的值(根据声明的数据类型)。注意:该值可以通过有效的表达式求值,例如a = 2 + 3;的行为与a = 5;相同。

  • a = 5;

  • 这是C++程序中使用的常见分配形式。它可以用于相应范围中的初始化或以后的赋值(在 a声明之后)。如果正确声明了 a类型的 int,则此语句将 5的整数值分配给 inta变量。

    声明可以直接使用它:
    int a = 5;

    第一次分配(当 a的声明未初始化时):
    int a;
    // some code may exist between.
    a = 5;

    或在声明的第一次赋值或初始化之后(取决于存储类)在相应范围内其他任何地方的赋值:
    int a;          // declaration of `a`.
    // some code may exist between.
    a = 5; // first assignment of `a` with the value of `5`.
    // some code may exist between.
    a = 7; // assignment of the value of `7` to `a`.

  • a(5);

  • 该语句使用 int的值初始化 a5变量。它只能在声明时进行显式初始化时使用:
    int a(5);

    否则,编译器很可能会引发错误,因为它“认为” a将是一个函数。

    从技术上讲, a(5)可以是一个函数,通常很难接受 5的值作为参数,但这是 int对象声明的上下文的不同之处。

  • a{5};

  • 与2相同。它将使用 a的值初始化 5。它只能由声明时的初始化使用:
    int a{5};

    否则,编译器将引发错误。

    注意:初始化 int a{5};int a(5)之类的值仅是C++功能。这样无法用C初始化对象。

  • a[5];

  • 使用此语句,我们显然不会初始化 5或将其值分配给 a变量。相反,我们定义一个数组,一个由 5对象组成的对象集群,由 a标识符表示为它自己的实体:
    int a[5]; // declaration of `a` - `a` is an array of 5 int objects.

    因此,我们这里没有单个对象,也没有为其分配任何值。

    此外,我们必须使用以下命令区分数组的声明:
    int a[5];

    稍后访问数组 int的某个 a对象,例如,例如:
    a[4] = 12;

    在这种情况下, a[4]表示数组内部的第 5个对象,并且 12的值分配给该数组的第五个对象。

    方括号内的数字(此处为 4)称为索引号。注意,索引号从 0开始。因此, a[0]表示数组中的第一个对象, a[1]表示数组中的第二个对象,依此类推。如果用 a[5]声明了 a,则不能以这种方式使用 int a[5];,因为在这种情况下,它将代表第六个对象,该对象未在内存中分配给 a

    关于c++ - 在C++中,a = 5,a(5),a {5}和a [5]有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768374/

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