透析C++的C++数组类型

开发 后端
任何C++固有数据类型都可以放进数组中,数组就是数值的集合,在C++中进行数组操作是一件极为复杂和困难的事情。

C++数组的类型实际上是指数组元素的取值类型,对于同一个数组,其所有元素的数据类型都是相同的,数组名的书写规则应符合标识符的书写规定,希望本文能给大家有用的信息。

例如,假设要保存一个整型数组,放五个整型值。可以声明数组如下:int myArray[5];这里编译器为数组分配图1.7所示的内存空间。由于每个int要4个字节存储,所以整个数组占用20字节的内存空间。

  1. 1: #include <iostream.h>   
  2.  
  3. 2: #include <conio.h>   
  4.  
  5. 3: #pragma hdrstop   
  6.  
  7. 4:   
  8.  
  9. 5: int main(int argc,char **argv)   
  10.  
  11. 6: {   
  12.  
  13. 7:char str[]="This is a string.";   
  14.  
  15. 8.cout << str << end1;   
  16.  
  17. 9.str[7]= '\0';   
  18.  
  19. 10. cout << str << end1   
  20.  
  21. 11. cout << end1 << "Press any key to continue...";   
  22.  
  23. 12: getch();   
  24.  
  25. 13: return 0;   
  26.  
  27. 14: } 

进一步说,如果知道数组的元素个数,并在声明数组时填充数组,则声明C++数组时连数组长度都可以省略。例如:int myArray[] = {-200, -100,0,100,200 };这是可行的,因为编译器从赋予的数值表可以判断出数组中元素的个数和分配给数组的内存空间。

数组可以是多维的。为了生成两维整型数组,这样就分配15个int空间(共60字节)。数组的元素可以和一维数组
样访问,只是要提供两个脚标操作符:int x = mdArray[1][1]+mdArray[2][1];

C++一个强大的特性是能直接访问内存。由于这个特性,C++无法阻止你写入特定内存地址,即使这个地址是程序不让访问的。下列代码是合法的,但会导致程序或Windows崩溃:int array[5];array[5]=10;这是常见的错误。

因为C++数组是以0为基数的,***脚标应是4而不是5。如果重载数组末尾,则无法知道哪个内存被改写了,使结果难以预料,甚至会导致程序或Windows崩溃。这类问题很难诊断,因为受影响的内存通常要在很久以后才访问,这时才发生崩溃(让你莫名其中之妙)。所以写入数组时一定要小心。

C++数组规则

数组是以0为基数。数组中的***个元素为0,第二个元素为1,第三个元素为2,等等。
数组长度应为编译常量。编译器在编译时必须知道为数组分配多少内存空间。不能用变量指定C++数组长度。所以下列代码不合法
◆大数组从堆叠(heap)而不是堆栈(stack)中分配(详见稍后)。
◆从堆叠分配的数组可以用变量指定数组长度。

这就在内存中分配18字节的内存空间用于存放字串。根据你的领悟能力,也许你会发现该字串中只有17个字符。分配18个字节的原因是字串要以终止null结尾,C++在分配内存空间时把终止null算作一个字符。 终止null是个特殊字符,用|0表示,等于数值0。程序遇到字符数组中的0时,表示已经到字串末尾。为了说明这点,输入并运行下列控制台应用程序。

【编辑推荐】

  1. C与C++中标准输入实现方式上的一点区别
  2. C++编译器如何对Const常量进行分配存储空间
  3. C++类库设计的基本构思与方法
  4. 玩转C++语言的几种方法
  5. 如何更好的进行C++代码编制
责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-01-19 14:28:41

C++ main()函

2010-01-18 09:39:25

C++语言

2010-01-22 13:45:36

C++代码

2010-01-18 17:48:46

C++类对象

2010-01-20 10:19:55

C++数组

2010-01-20 14:13:33

C++变量

2010-01-21 10:04:14

C++语言

2010-01-28 16:31:54

C++类型

2010-01-20 09:54:27

C++数据类型

2021-10-19 14:04:28

C++类型数字

2010-01-27 16:05:06

C++堆栈

2010-01-21 09:34:57

C++语法

2010-01-21 14:07:14

CC++声明

2010-01-26 15:51:06

C++变量

2021-10-21 18:52:00

C++数组存储

2023-09-24 23:44:10

C++类型安全

2010-01-21 13:33:44

C++基类

2010-01-25 10:25:19

C++变量

2010-01-27 17:16:52

C++构造函数

2020-08-21 13:20:36

C++If ElseLinux
点赞
收藏

51CTO技术栈公众号