浅析C++中的C++数组规则

开发 后端
在C++中,数组是以0为基数,数组中的第一个元素为0,第二个元素为1,第三个元素为2,还有一些数组的相关介绍那么就请看下文吧。

大多数人对于C++数组的理解还是不够深刻的,如果想要对数组赋值,那么首先要向数组元素赋值终止null和其它字符值时,必须用单引号,所以在处理C++数组时一定要仔细。。

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

数组规则

◆数组是以0为基数。数组中的***个元素为0,第二个元素为1,第三个元素为2,等等。

◆数组长度应为编译常量。编译器在编译时必须知道为数组分配多少内存空间。不能用变量指定数组长度。所以下列代码不合法,会导致编译错误: 小心不要重载数组末尾。

◆ 大数组从堆叠(heap)而不是堆栈(stack)中分配(详见稍后)。
◆ 从堆叠分配的数组可以用变量指定数组长度。

字符数组

奇怪的是,C++不支持字串变量(放置文本的变量),C++数组中的字串是用char数据类型的数组表示的。例如,可以将变量赋予char数组如下。这就在内存中分配18字节的内存空间用于存放字串。根据你的领悟能力。

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

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

分析 最初,字符数组包含字符串This is a string和一个终止null,这个字串通过cout送到屏幕上。下一行将数组的第7个元素赋值为|0,即终止null。字串再次发送到屏幕上,但这时只显示This is。原因是计算机认为数组中字串在第7个元素上终止,余下字串仍然在内存空间中,但不显示,因为遇到了终止null。图1.10演示了将数组的第7个元素赋值为|0的语句前后的字符数组。

说明 C++程序中单引号与双引号是有差别的。向数组元素赋值终止null和其它字符值时,必须用单引号。单引号的作用是将引号内的字符变成整型值(该字符的ASCII值),然后将这个值存放在内存地址中。将字串赋予字符数组时,必须用双引号。如果用错引号,则编译器会发生编译错误。

【编辑推荐】

  1. 简介学习C++总结之谈
  2. C++库函数进行学习探索总结笔记
  3. C++类库设计的基本构思与方法
  4. C++语言真的还有市场价值?
  5. C++类库设计的基本构思与方法
责任编辑:chenqingxiang 来源: 艾瑞网
相关推荐

2010-01-27 16:05:06

C++堆栈

2010-01-21 09:34:57

C++语法

2010-01-27 17:16:52

C++构造函数

2011-06-08 14:42:33

C++多维数组

2010-01-26 14:35:11

C++关键字

2010-01-28 13:45:06

C++数组

2021-10-19 14:04:28

C++类型数字

2010-01-21 13:48:30

C++基类

2010-01-20 14:13:33

C++变量

2010-01-21 14:07:14

CC++声明

2021-10-21 18:52:00

C++数组存储

2010-01-25 10:54:18

C++设计

2010-01-25 10:25:19

C++变量

2010-01-28 16:31:54

C++类型

2020-08-21 13:20:36

C++If ElseLinux

2010-01-21 13:33:44

C++基类

2010-01-25 16:58:15

C++程序

2010-01-26 10:42:26

C++函数

2009-09-16 14:56:23

C++

2010-01-25 14:18:46

C++对象模型
点赞
收藏

51CTO技术栈公众号