C ++中的数组

本文介绍了C语言中的数组基础知识,包括如何声明和访问数组,特别是强调了数组在存储字符串时的作用。还详细讲解了多维数组,如二维数组的声明和使用,以及如何通过循环遍历和修改数组元素。此外,提到了指针与数组的关系,并提醒了避免数组越界的注意事项。

考虑这样的数组:

[][][][][][] 

每个括号对都是数组中的一个插槽(元素),您可以将信息放入其中的每个括号中。这几乎就像是并排有一组变量。

让我们看一下声明数组的语法。

int examplearray[100]; // This declares an array

这将形成一个具有100个插槽或位置(用于存储值)的整数数组(也称为元素)。要访问数组的特定部分元素,只需将数组名称以及括号中的索引号放进去。这对应于数组的特定元素。一个技巧是,第一个索引号(即第一个元素)为零,最后一个为元素数减一。例如,在100个元素的数组中为0-99。

您可以用这个简单的知识做什么?假设您要存储一个字符串,因为C没有用于字符串的内置数据类型,所以通常使用字符数组来模拟字符串。(C ++现在将字符串类型作为标准库的一部分。)

例如:

char astring[100]; 

将允许您声明一个由100个元素或插槽组成的char数组。然后,您可以从用户那里接收输入,如果用户键入了一个长字符串,则它将进入数组。整洁的是,以这种方式使用字符串非常容易,甚至还有一个名为cstring的头文件。关于字符串的使用还有另一课,因此在这里没有必要讨论。

数组最有用的方面是多维数组。我如何看待多维数组:

[][][][][]
[][][][][]
[][][][][]
[][][][][]
[][][][][]

这是我可视化二维数组时的外观的图形。

例如:

int twodimensionalarray[8][8];

声明一个具有两个维度的数组。将其视为棋盘。您可以轻松地使用它来存储有关某种游戏的信息或编写井字游戏。要访问它,您只需要两个变量,一个在第一个插槽中,另一个在第二个插槽中。您甚至可以制作一个三维数组,尽管您可能不需要。实际上,您可以制作一个四百维数组。但是,将其可视化会令人困惑。在大多数情况下,数组都像其他任何变量一样被对待。您可以通过以下方式修改其中的一个值:

arrayname[arrayindexnumber] = whatever; 

或者,对于二维数组

arrayname[arrayindexnumber1][arrayindexnumber2] = whatever;

但是,切勿尝试写入超过数组最后一个元素的数据,例如当您拥有10个元素的数组时,并尝试写入[10]元素。为其分配的阵列的内存仅在内存中有十个位置,但是下一个位置可能是任何东西,这可能会导致计算机崩溃。

您会发现许多与数组有关的有用的东西,从用一个名称存储有关某些事物的信息到制作井字游戏等游戏。我有一个建议是在访问数组时使用循环。

#include <iostream>
 
using namespace std;
 
int main()
{
  int x;
  int y;
  int array[8][8]; // Declares an array like a chessboard
   
  for ( x = 0; x < 8; x++ ) {
    for ( y = 0; y < 8; y++ )
      array[x][y] = x * y; // Set each element to a value
  }
  cout<<"Array Indices:\n";
  for ( x = 0; x < 8;x++ ) {
    for ( y = 0; y < 8; y++ )
      cout<<"["<<x<<"]["<<y<<"]="<< array[x][y] <<" ";
    cout<<"\n";
  }
  cin.get();
}

在这里,您会看到循环效果很好,因为它们为您增加了变量,而您只需要增加1。这是最容易读取的循环,您可以访问整个数组。

当您想要一个指向字符串的指针时,数组不需要其他变量做的一件事就是引用运算符。例如:

char *ptr;
char str[40];
ptr = str;  // Gives the memory address without a reference operator(&)

相对于

int *ptr;
int num;
ptr = &num; // Requires & to give the memory address to the ptr

原因是当将数组名称用作表达式时,它指向第一个元素的指针,而不是整个数组的指针。该规则引起很多混乱,有关更多信息,请参见我们的常见问题。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值