首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >A= 5,a(5),a{5}与a[5]在C++中的区别是什么?

A= 5,a(5),a{5}与a[5]在C++中的区别是什么?
EN

Stack Overflow用户
提问于 2020-01-16 11:10:07
回答 1查看 495关注 0票数 1

a = 5a(5)a{5}a[5]在C++中的陈述有什么区别?

我偶尔会看到它们被用于为C++程序中的对象分配值。他们之间有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-16 11:10:07

C++中所有这些语句在初始化(在对象声明时完成)和赋值方面都有一个主要区别;与其他语句相比,最后一个语句a[5]也是一个完全不同的东西。

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

  1. a = 5;

这是C++程序中常用的赋值形式。它既可用于初始化,也可用于在各自范围内的以后分配(在a声明之后)。如果a正确声明为int类型,则此语句将5的整数值赋给aint变量。

它可以直接由声明使用:

代码语言:javascript
运行
复制
int a = 5;

第一次赋值(当a在声明时未初始化时):

代码语言:javascript
运行
复制
int a;
// some code may exist between.
a = 5;

或在声明的第一次赋值或初始化(依赖于存储类)之后各自范围内的任何其他位置的赋值:

代码语言:javascript
运行
复制
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`.

  1. a(5);

此语句以int值初始化a5变量。它只能在声明时的显式初始化时使用:

代码语言:javascript
运行
复制
int a(5);

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

从技术上讲,a(5)可以是一个函数,它将5的值作为一般的强硬参数,但在这里区别的是int对象声明的上下文。

  1. a{5};

与2一样,它用a的值初始化5。只有在声明时初始化时才能使用它:

代码语言:javascript
运行
复制
int a{5};

否则编译器会抛出一个错误。

注意:初始化像int a{5};int a(5)这样的值仅是C++特性。用这种方式初始化对象是不可能的。

  1. a[5];

使用此语句,我们显然不会初始化或将5的值分配给a的变量。相反,我们定义一个数组,一个对象集群,由5对象组成,它由a标识符表示为自己的实体。

代码语言:javascript
运行
复制
int a[5]; // declaration of `a` - `a` is an array of 5 int objects.

因此,我们这里没有一个对象,也没有给它赋值。

此外,我们还必须区分以下数组的声明:

代码语言:javascript
运行
复制
int a[5];

然后访问数组a的某个a对象,如前面的示例所示:

代码语言:javascript
运行
复制
a[4] = 12;

在本例中,a[4]表示数组中的5th对象,并将12的值分配给数组的第五个对象。

方括号内的数字(此处为4 )称为索引号。注意,索引号依次从0开始。因此,a[0]表示数组中的第一个对象,a[1]表示第二个对象,依此类推。如果您用a[5]声明a,那么您就不能以这种方式使用int a[5];,因为在本例中,它表示的是第六个对象,它没有在内存中分配给a

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59768374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档