C语言之数组

数组

数组语义

数组是一种容器(放东西的东西),特点是:

  1. 其中所有的元素具有相同的数据类型;
  2. 一旦创建,不能改变其大小
  3. 数组中的元素在内存中是连续依次排列的

定义数组

<类型> 变量名称[元素数量];
int grades[10];
double weight[20] = {1,2,3}; // 省略的数组内容将填充为0
  • 类型表示数组中每个元素的类型
  • 元素数量必须是整数
  • C99之前,元素数量必须是编译时刻确定的字面量

数组初始化

int a1[] = {1,2,3,4,5,6,7}; // 编译器会计算数组的大小
int a2[4] = {2,3,}; // 编译器会将a[2]、a[3]默认设置为0
int a3[5] = {[1] = 3, [3] = 5, 6}; // C99标准才有的,最终结果为:a3={0, 3, 0, 5, 6};

数组的单元

  • 数组的每个单元就是数组类型的一个变量。
  • 使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数。

有效的下标范围

  • 编译器和运行环境都不会检查数组下标是否越界,无论对数组单元进行读或写。
  • 一旦程序运行,越界的数组访问可能造成问题,导致程序奔溃。segmentation fault
  • 程序猿应该保证程序只是用有效的下标值:[0, 数组的大小-1]

长度为0的数组

int a[0];长度为零的数组可以存在,但是无用。


数组的使用:数组的定义->数组的初始化->使用数组->销毁数组

二维数组

二维数组即两个维度的数组,可以理解为数组里的元素为数组。

  • 定义:
int array[3][5];

二维数组中每个元素的数据类型为int

二维数组

  • 遍历二维数组:
for ( i =0; i < 3; i++ ) { // i控制行
  for ( j = 0; j < 5; j++ ) { // j控制列
    a[i][j] = i*j;
  }
}

a[i][j]表示第i行第j列的单元。

  • 二维数组的初始化
int [][5] = {
  {0,1,2,3,4},
  {2,3,4,5,6}
};

注意

  1. 列数必须给出,行数可以由编译器来确定。
  2. 每行一个{},逗号进行分割。
  3. 最后一个数组的逗号可以省略。
  4. 初始化过程中,不足表示补0操作。

数组运算

  1. 数组的长度
    sizeof是一个运算符,计算整个数组占据的内容的大小,单位是字节。
    数组的长度:sizeof(arr) / sizeof(arr[0])
#include <stdio.h>
int main(void) {
  int arr[] = {1,2,4,6,73,2,4,6,7,9};
  printf("数组的长度为:%d\n", sizeof(arr)/sizeof(arr[0]));
  return 0;
}

数组作为函数参数时,往往必须再用另一个参数来传入数组的大小,这样做的理由有:

  • 不能在[]中给出数组的大小
  • 不能在利用sizeof来计算数组的元素个数
  1. 数组的赋值
    数组变量本省不能被赋值;
    要把一个数组的所有元素交给另外一个数组,必须采用遍历。

详情数组查看C语言中文网之数组

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • C语言之数组 ——TechZone(Harris) 学完了前面几种基础语法之后,你可能会渐渐发现,现有的数据的记录...
    HarrisWilde阅读 807评论 1 1
  • 1.一维数组 特点:同一数组中的所有元素都属于同种数据类型,数组元素用数组名和相应的下标来确定。方法:一个数组元素...
    keeeeeenon阅读 457评论 0 3
  • 思想重要,背代码没有用;理解重要,灵活会用才能成为大佬。 一、一维数组 形式为:arrayName[index] ...
    KangSmit的算法那些事儿阅读 590评论 0 0
  • 一. 定义整型数组的方式 1. int array[5] = {0}; 给定数组元素个数,且赋值均为0 2. ...
    CarsonChen阅读 427评论 0 0
  • 数组: 为n个变量连续发配存储空间 所有的变量数据类型必须相同 所有变量所占的字节大小必须相等 数组初始化:完全初...
    深藍碎片_阅读 138评论 0 0