如果我们声明一个由四个元素组成的数组,这些元素可以存储值吗
If we declare an array of four elements, can these elements store values?
在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];
}
a[0]
保持为空- 循环运行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到4对
a
进行索引。这意味着a
必须至少有5个元素长;它目前被定义为长度为3。#include <iostream.h>
应该只是#include <iostream>
。<iostream.h>
是预先标准化的,已过时。C++数组索引是基于0的,所以虽然从技术上讲不是错误,但您忽略了数组的第一个元素。您可能应该将
for
循环表述为for (int i = 0; i < 4; ++i)
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 如何将元素添加到数组的线程安全函数?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输出没有重复元素的动态数组(收缩数组)C++
- 数组中最大的非重复元素
- 数组元素打印的递归方法
- 对字符数组中的元素执行逐位操作
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 通过交换元素使数组相同
- 按平均值替换数组中的元素
- 打印矢量数组中的所有元素
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何将元素从向量转移到新数组?
- 如何在向量数组中插入元素?
- 为什么 2 个相同数组的元素彼此相等
- C++ 中的二维整数数组,每行中的元素数量不均匀