如果我们声明一个由四个元素组成的数组,这些元素可以存储值吗

If we declare an array of four elements, can these elements store values?

本文关键字:元素 数组 存储 一个 我们 声明 如果 四个      更新时间:2023-10-16

在C++中,如果我们声明一个由四个元素组成的数组,这些元素能存储值吗?我的意思是,如果我们声明以下数组:

#include <iostream>
int main()
{
    int a[4];
    double res;
    double avg;
    avg = res = 0.0; 
    for(int i=0; i<4; i++)
    {
        cout<<"Please enter age ";
        cin>> a[i];
    }
    for(int i=0; i<4; i++)
    {
        cout<< "You have entered these ages " <<a[i];
        cout<<endl;
        res += a[i];
    }
    avg = res/4;
    cout<< "Total is "<<res <<endl;
    cout<< "Avg is "<<avg;
}

上面这个程序是一个带有整数(数字)数组的程序,而在字符数组中,我们可以分配字符数组元素的任何值吗?

是。

数组是相同类型值的占位符,在数组解密过程中保留了许多位置。

int a[3];

意味着它可以存储3个int。以作为a[0]a[1]a[2]进行访问。

现在,你可以看到你在循环中遇到的问题:

for(int i=1; i<=4; i++)
{
    cout<<"Please enter age ";
    cin>> a[i];
}
  1. a[0]保持为空
  2. 循环运行4次:a[1], a[2], a[3], a[4]和,最后2个索引未保留

您可以按以下方式更正:

for(int i=0; i<3; i++)
{
    cout<<"Please enter age ";
    cin>> a[i];
}

你的另一个问题:

在字符数组中,我们可以指定字符数组元素的任何值吗

不,每个索引将只存储一个char

char c[3];

将恰好存储3个char s。如果您尝试使用其他索引,可能会导致未定义的行为、分段错误。当您试图访问未分配给进程的内存时。

是的,声明的元素可用于存储值。

但是,在您的示例中,您只声明了一个3元素数组,它为您提供了数组元素a[0], a[1],a[2]。您正在访问数组元素a[1], a[2], a[3], a[4],导致出现越界情况。

如果您询问是否可以为数组的元素赋值,那么答案是肯定的。以下所有内容都是完全有效的:

char a[10];
a[4] = 'x';
std::cin >> a[6];

但是请注意,您的代码包含错误:

  1. 您可以使用索引1到4对a进行索引。这意味着a必须至少有5个元素长;它目前被定义为长度为3。

  2. #include <iostream.h>应该只是#include <iostream><iostream.h>是预先标准化的,已过时。

  3. C++数组索引是基于0的,所以虽然从技术上讲不是错误,但您忽略了数组的第一个元素。您可能应该将for循环表述为for (int i = 0; i < 4; ++i)