C / C ++中的数组讲解
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。
CSDN视频网址:http://edu.csdn.net/lecturer/144
数组是存储在连续内存位置的项的集合,这个想法是将多个相同类型的项声明在一起。效果如下所示:
数组声明:
在C中,我们可以通过指定它的大小或通过初始化或者两者来声明数组。
// Array declaration by specifying size int arr[10]; Run on IDE // Array declaration by initializing elements int arr[] = {10, 20, 30, 40} // Compiler creates an array of size 4. // above is same as "int arr[4] = {10, 20, 30, 40}" Run on IDE // Array declaration by specifying size and initializing // elements int arr[6] = {10, 20, 30, 40}
访问数组元素:
使用整数索引来访问数组元素, 数组索引从0开始,直到数组的大小减去1.以下是几个例子。
int main() { int arr[5]; arr[0] = 5; arr[2] = -10; arr[3/2] = 2; // this is same as arr[1] = 2 arr[3] = arr[0]; printf("%d %d %d %d", arr[0], arr[1], arr[2], arr[3]); return 0; }
Output:
5 2 -10 5
无索引越界检查:
C中没有任何索引不合格检查,例如以下程序编译正常,但运行时可能会产生意外的输出。
int main() { int arr[2]; printf("%d ", arr[3]); printf("%d ", arr[-2]); return 0; }
此外,在C中,初始化具有指定大小的元素的数组不是编译器错误, 例如下面的程序编译好。
int main() { // Array declaration by initializing it with more // elements than specified size. int arr[2] = {10, 20, 30, 40, 50}; return 0; }
该程序用C ++编译不能通过, 如果我们将上述程序保存为.cpp,程序将生成编译器错误“错误:'int [2]'的初始化程序太多。
再给读者显示一下数组元素存储在连续的位置代码展示:
int main() { // an array of 10 integers. If arr[0] is stored at // address x, then arr[1] is stored at x + sizeof(int) // arr[2] is stored at x + sizeof(int) + sizeof(int) // and so on. int arr[5], i; printf("Size of integer in this compiler is %u\n", sizeof(int)); for (i=0; i<5; i++) // The use of '&' before a variable name, yields // address of variable. printf("Address arr[%d] is %u\n", i, &arr[i]); return 0; }
Output:
Size of integer in this compiler is 4 Address arr[0] is 2686728 Address arr[1] is 2686732 Address arr[2] is 2686736 Address arr[3] is 2686740 Address arr[4] is 2686744
这些都是程序运行的一些小技术点,希望对读者有所帮组。。。。。。。
C / C ++中的数组讲解的更多相关文章
- 基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 下面小编就为大家分享一篇基于Python中numpy数组的合并实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python中n ...
- 使用 Arrays 类操作 Java 中的数组
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴 ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- 慕课网-Java入门第一季-6-7 使用 Arrays 类操作 Java 中的数组
来源:http://www.imooc.com/code/1556 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现 ...
- 【PHP】最详细PHP从入门到精通(三)——PHP中的数组
PHP从入门到精通 之PHP中的数组 各位开发者朋友大家好,链接上次更新,我们PHP的学习也更深了一层,本次博主给大家带来PHP数组的数组实例详解的相关资料.数组分为数组数值数值,关联数组,多维数组 ...
- 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总
PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
- 第81节:Java中的数组
第81节:Java中的数组 本节介绍数组的基本概念,数据就是一种数据结构,可以用来存储多个数据,每个数组中可以存放相同类型的数据.比如,在学校,我们是一个班,这里的班级中每个同学都是这个班级数组中的元 ...
- Java中的数组和方法
3.1 数组的定义和使用 数组(Array)是用来存储一组相同数据类型数据的集合.数组中的每个数据称为一个元素(element),数组可以分为一维数组,二维数组和多维数组.我们 主要讲解一维数组和二维 ...
随机推荐
- MySQL之 视图,触发器,事物,存储过程,函数(Day48)
阅读目录 一.视图 二.触发器 三.事物 四.存储过程 五.函数 六.流程控制 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...
- python 的两个模块xlwt,xlrd,写入和读取Excel数据
http://www.cnblogs.com/fireme/p/3887284.html 这上面写的很全,不过我只需要简单的读和写的操作就ok了,下面是我写的读和写入Excel操作 读取Excel数据 ...
- 20162326 《Java程序设计》第3周学习总结
20162326 <Java程序设计>第3周学习总结 教材学习内容总结 这周我通过课堂学习了VIM的列编辑crtl+v,shift+i shift+a·分别是左侧插入和右侧插入.还学习了使 ...
- 20145109 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 S.O.L.I.D原则: ...
- NOIP 马拦过河卒
描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. 棋盘 ...
- Pandas IO工具
Pandas I/O API是一套像pd.read_csv()一样返回Pandas对象的顶级读取器函数. 读取文本文件(或平面文件)的两个主要功能是read_csv()和read_table().它们 ...
- ZC_03_创建对象
1. 正如 上一篇文章中所见,反射创建 类实例的方式,主要为2类: (1).Class对象.newInstance() 这是使用 默认的无参构造函数 创建对象 (2).Constructor对象.ne ...
- devstack环境中不能创建cinder volume
刚安装好的devstack环境中无法成功创建cinder volume,创建的volume的status为error:在cinder scheduler中看到失败log:2015-10-15 14:1 ...
- MySQL无法启动几种常见问题小结
问题1:目录.文件权限设置不正确 MySQL的$datadir目录,及其下属目录.文件权限属性设置不正确,导致MySQL无法正常读写文件,无法启动. 错误信息例如: 复制代码 代码如下:[code] ...
- koa2使用&&中间件&&angular2的koa托管
文章导航 1,koa2使用: 2,写中间件: 3,koa2路由配置angular2; 一.先上代码,一篇,看完koa2中大多基础方法: const Koa=require('koa'); const ...