首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c语言 数组存放规则,C语言数组详解

初始化赋值一般形式为: static 类型说明符 数组名[常量表达式]={值,值……值}; 其中static表示是静态存储类型, C语言规定只有静态存储数组和外部存储数组才可作初始化赋值(有关静态存储...,外部存储概念在第五章中介绍)。...但是,实际硬件存储器却是连续编址, 也就是说存储器单元是按一维线性排列。 如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。...C语言允许用字符串方式对数组作初始化赋值。...这是由于在C语言中规定,数组名就代表了该数组首地址。 整个数组是以首地址开头一块连续内存单元。如有字符数组char c[10],在内存可表示如图4.2。

6.2K30

C语言系列】C语言数组

一、数组概念 用来存储一组数据构造数据类型 特点:只能存放一种类型数据,如全部是int型或者全部是char型,数组数据成为元素。...二、数组定义 格式: 类型 数组名[元素个数]; 举例:存储5个人年龄 Int agrs[5]; //在内存中开辟4x5=20个字节存储空间 可以在定义数组同时对数组进行初始化: Int ages...Int x[]={1,2}; Char ca[5]={‘a’,‘A’,‘B’,‘C’,‘D’}; 数组名即代表数组地址,数组地址==数组名(ca)==数组首元素地址&ca[0] 在内存中,内存从大到小进行寻址...,为数组分配了存储空间后,数组元素自然从上往下排列存储,整个数组地址为首元素地址。...模拟该数组内存存储细节如下: ? 注意:字符在内存中是以对应ASCII值二进制形式存储,而非上表形式。 在这个例子中,数组x地址为它首元素地址0x08,数组ca地址为0x03。

28.6K62
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言数组

    3.1 数组下标 C语言规定数组是有下标的,下标是从0开始,假设数组有n个元素,最后一个元素下标是n-1,下标就相当于数组元素编号,如下: int arr[10] = {1,2,3,4,5,6,7,8,9,10...}; 在C语言数组访问提供了一个操作符 [] ,这个操作符叫:下标引用操作符。...所以我们得出结论:数组在内存中是连续存放。 5. sizeof计算数组元素个数 在遍历数组时候,我们经常想知道数组元素个数,那C语言中有办法使用程序计算数组元素个数吗?...sizeof 中C语言是一个关键字,是可以计算类型或者变量大小,其实 sizeof 也可以计算数组大小。...C99中变长数组C99标准之前,C语言在创建数组时候,数大小指定只能使用常量、常量表达式,或者如果我们初始化数据的话,可以省略数组大小。

    8410

    C语言------数组

    { //在打印数组元素 printf("%d ", arr[i]); } 一维数组在内存中存储 int main() { int arr[] = {...个位上c+4等用于12+4=16,满16进一,1+6=7,所以6c+4=70 所以上述数组地址都只相隔4 1个int类型字节占4个字节 得出结论: 1.数组在内存中是连续存放 2.随着数组下标的增长...数组创建 概念 将一维数组作为数组元素,就是二维数组 将二维数组作为数组元素,就是三维数组 二维数组以上被称为多维数组 type name[行][列] 数组名字根据自己需求定义 float score...,列不能省略 int date[][5] = {{1,2},{3,4},{5,6}}; 二位数组使用 数组名是地址 c语言默认行和列默认从0开始 int arr[3][5] = {1,2,3,4,5...{ printf("%d", arr[i][j]); } printf("\n"); } return 0; } 二维数组在内存中存储

    7610

    C语言数组

    C 语言支持数组数据结构,它可以存储一个固定大小相同类型元素顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型变量。...声明数组C 中要声明一个数组,需要指定元素类型和元素数量,如下所示: type arrayName [ arraySize ]; 这叫做一维数组。...arraySize 必须是一个大于零整数常量,type 可以是任意有效 C 数据类型。...初始化数组C 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; 大括号 { }...所有的数组都是以 0 作为它们第一个元素索引,也被称为基索引,数组最后一个索引是数组总大小减去 1。以下是上面所讨论数组图形表示: ?

    5.1K10

    C语言——数组

    →   int arr [3] ={1,2,3}  数组如果初始化了,可以不规定大小,数组会根据初始化大小来确定大小 c数组类型 数组元素有分类型,数组也是有类型,而数组算是一种自定义类型。...a,数组下标 C语言中,数组下标是从0开始,如果有n个元素,则第一个元素下标为0,最后一个元素下标为n-1 ,下面举例: 对于:            int arr [5] = {1,2,3,4,5...}; 数组元素:           1   2   3  4   5  对应下标:           0   1   2   3  4   C语言中 [ ] 是“下标引用操作符” ,...,我们可以得出,数组在内存储特点是: 1,数组随下标的增长,地址由小变大 2,并且每两个相邻元素之间相差4(即一个整形大小:4个字节) 三,二维数组 (1)了解二维数组 如果我们把一维数组当做数组元素...,那么此时创造就是二维数组;把二维数组当元素,那创造就是三维数组,依次类推,二维数组以上统称为多维数组

    15910

    c语言_数组

    数组 1、数组定义和使用 格式: 数据类型 数组名[元素个数] 元素个数,代表该数组有多少个相同数据类型变量 下标 用来表示数组某一个元素 例如 int arr[10]; arr[1]代表数组第二个元素...数组下标是从0开始数组元素个数-1 数组下标越界:超出了数组元素个数下标,如果操作越界数据会出现程序错误 1、乱码结果 2、报错 求出数组元素个数: int (size_t) unsigned...(数据类型)) 数组名+1(sizeof(数组名)) 练习:十只小猪称体重 定义一个数组 存储小猪体重 通过遍历找到最重小猪 找到数组中数据最大值下标 根据下标打印数据 练习: 找到小猪中第二重...scores【10】【3】 求出每名学生总成绩和平均成绩 求出班级语文 数学 英语平均成 语数外 【0】【0】 【0】【1】 【0】【2】 字符数组和字符串: 字符数组和字符串区别在于是否有字符串结束标志...中就是数字0 ​ printf("%s", arr); ​ //for (int i = 0; i < 10; i++) ​ //{ ​ // printf("%c", arr[i]); ​ //} ​

    4.5K20

    C语言-数组

    数组介绍 C语言数组是一个同类型数据集合,主要用来存储一堆同类型数据。 程序里怎么区分是数组?[ ] 这个括号是数组专用符号. 定义数组、 访问数组数据都会用到。...访问数组成员时候:下标是从0开始。int data[10]; 下标 (0~9) 2. 数组只是支持在定义时候进行整体赋值。 3. 数组定义时候,[]里只能填常量。...数组在定义之后就无法更改大小。 4. 数组空间是连续—内存。 5. 数组名称就是数组空间首地址。 6. 数组初始化时,如果没有赋值,那么数组空间里数据是未知---局部变量。 7....数组定义语法与注意事项 1. 数组名称是数组元素首地址。(数组名字就是地址) 2. 数组只能在初始化时候进行整体赋值。比如: int a[100]={10,20,30}; 3....数组定义时候(C89), 数组下标里大小只能填常量。

    4K10

    c语言数组

    对于一维数组int arr[10]={1,2,3,4,5,6,7,8,9,10}: 为了能够使用下标操作数据,c语言提供了一种操作符:[],叫做下标引用操作符。...为了深入理解数组,让我们了解一下一维数组在内存中存储形式。...四、变长数组C99标准之前,数组创建时元素个数只能是一个常量,这导致数组创建之后,如果过大则会浪费空间,过小又不够用。...而C99中加入了一个新概念--变长数组,它允许创建数组时所设置元素个数为一个变量。...不过,所谓“变长数组”并非真正意义上“变长”,它在创建好之后大小仍然是不可变。目前VS2022虽然支持大部分C99语法,但是无法支持变长数组

    8110

    C语言数组——字符数组

    字符数组 字符数组顾名思义就是数组元素类型为字符型数组。特殊之处在于它是数组元素为字符数组。其定义一般形式和注意事项与之前讲解一般数组类似,只是其中类型说明符是char。...}; for (i = 0; i < SIZE; i++) { printf("%c", arr[i]); } return 0; } 运行结果: 运行结果为“Hello...='\0'; i++) { printf("%c", arr[i]); } return 0; } 运行结果: 这时输出结果中就不含有任何空字符了,因为巧妙地使用了字符数组...= '\0'; i++) { printf("%c", arr[i]); } return 0; } 运行结果: 在对一维字符数组进行定义和初始化过程中,可以不指定其长度。..., sizeof(arr2)); return 0; } 运行结果: 从运行结果发现,采用这两种方式得到数组长度并不相同,在采用字符串常量对字符数组进行初始化过程中,在内存中进行存储时会自动在字符串后面添加一个结束符

    7.5K20

    C语言数组——字符数组

    C语言目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析...VS2019编写简单C程序示例 简单示例,VS2019调试C语言程序 C语言基础-基本算法 C语言基础-数据类型 C语言输入输出函数 C语言流程控制语句 C语言数组——一维数组...C语言数组——二维数组 前面两篇文章分别介绍了一维数组和二维数组,今天我们一起看看字符数组 字符数组 字符数组顾名思义就是数组元素类型为字符型数组。...,在内存中进行存储时会自动在字符串后面添加一个结束符‘\0’,所以得到字符数组长度是字符串常量长度加1;而采用字符常量列表方式对字符数组进行初始化就不会在最后添加一个结束符,所以利用这种方式定义字符数组长度就是字符常量列表中字符个数...如果您觉得本篇文章对您有帮助,请转发给更多的人 【C语言中文社区】是一个C语言视频教程、学习笔记、电子书、计算机二级资料等专注于C语言编程学习者干货知识分享平台,精选深度文章,分享优秀干货类、技能类学习资源

    6.2K40

    C语言——数据存储

    因为:char虽然是字符类型,但是字符类型储存时候,存储字符ascii码值 ascii值是整数。...有正负数据可以存放在有符号变量中 只有正数数据可以存放在无符号变量中 浮点数家族:  构造类型:  指针类型 空类型 原码 反码 补码 计算机中整数有三种表示方法,即原码、反码和补码...三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位 负整数三种表示方法各不相同  原码 :直接将二进制按照正负形式翻译成二进制就可以....反码:将原码符号位不变,其他位依次取反就可以得到了 补码:反码加一就是补码 对于整数来说,数据存放内存中其实存放是补码 大小端介绍 大端小端 大端(存储)模式,是指数据低位保存在内存高地址中...,而数据高位,保存在内存低地址 中; 小端(存储)模式,是指数据低位保存在内存低地址中,而数据高位,,保存在内存高地 址中

    1.4K10

    c语言如何遍历数组,C语言数组遍历

    C语言数组遍历教程 C语言for循环遍历数组详解 语法 for (i = 0; i < count; i++) { // arr[i] } 说明 其中 count 是数组元素个数,此时,数组每一个元素是...C语言while循环遍历数组详解 语法 int i = 0; while(i < count) { // arr[i] i++; } 说明 其中 count 是数组元素个数,此时,数组每一个元素是...C语言do while循环遍历数组详解 语法 int i = 0; do { // arr[i] i++; }while(i < count); 说明 其中 count 是数组元素个数,此时,数组每一个元素是...arr[i],注意每次遍历完之后,一定要加 i 值加一,同时,我们一定要先访问数组元素,再次将变量 i 加一,顺序不能错。...C语言数组遍历总结 C 语言数组遍历,有三种方式,分别为:通过 for 循环遍历,通过 while 循环遍历与通过 do while 循环遍历方式。

    6.9K20

    C语言数据存储

    signed int long unsigned long [int] signed long [int] 补充: char是signed char还是unsigned char,C语言标准并没有规定...浮点数家族: float double 构造类型: > 数组类型 > 结构体类型 struct > 枚举类型 enum > 联合类型 union 空类型: void 表示空类型(无类型),通常应用于函数返回类型...在内存中存储: 可以看到对于a和b分别存储是补码。但是我们发现顺序有点不对劲。 这是又为什么?...但是在C语言中除了8 bitchar之外,还有16 bitshort型,32 bitlong型(要看具体编译器),另外,对于位数大于8位处理器,例如16位或者32位处理器,由于寄存器宽度大于一个字节...d,b=%d,c=%d",a,b,c);   return 0; } 2.

    17810

    C语言C语言数组和指针

    ---- 友情提醒:本文可能是全csdn最详细指针内容了,希望你能用心读下去 前言 接下来讲解部分是指针进阶,包含多种指针以及对应数组,这部分章节对我们来说很重要,也是c语言重点模块儿,重要性不言而喻...,那么他们在内存中空间位置肯定是不同,而数组名代表首元素地址,两个不同数组首元素地址肯定也是不相同啊,那么自然str1肯定和str2是不相同啦 2.首先常量字符串要在内存中开辟空间存储它本身...(c/c++会把常量字符串储存到单独一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)** 2.数组指针 2.1数组指针定义 1.数组指针嘛...这个数组类型就是去掉数组名剩下部分,比如这个数组大小是5个int,数组元素类型是int 解释2: parr1是数组名,去掉数组名,剩下就是数组类型,比如这个数组大小是10个int*,数组元素类型是整形指针...回调函数不是由该函数实现方直接调用,而是在特定事件或条件发生时由另外一方调用,用于对该事件或条件进行响应。 我们直接大白话给他翻译成通俗易懂语言。怎么样就是回调函数呢?

    64.7K37

    C语言数组——一维数组

    所谓数组,是指将那些具有相同类型、数量有限若干个变量通过有序方法组织起来一种便于使用形式。数组属于一种构造类型,其中变量被称为数组元素。...一位数组 一位数组是最简单数组类型,它定义形式如下: 类型说明符 数组名[常量表达式] 类型说明符是数组中每个元素类型,常量表达式是数组元素个数 在使用一维数组时候需要留意以下两个要点 常量表达式值必须是正整数...arr,在引用数组元素时,采用"数组名[下标]"方式,将其中每一个元素视为一个普通变量来进行操作。...需要注意是,因为定义数组arr仅含有9个元素,所以在使用过程中,下标值不能超过8,否则就会出现下标越界错误,示例如下: 在使用数组时候要特别注意数组越界,不然很有可能为自己埋下一颗雷(bug...printf("&arr[%d]=%d\n", i, &arr[i]); } return 0; } 运行结果如下: 从结果我们可以看出,每个元素占用4个字节,在内用中存储结构图如下

    2.9K10

    C语言初阶——数组

    ---- 前言   数组C语言中高频使用工具,数组能将一组同类型元素集合在一起,在进行调用或排序时很方便,由于有了数组,我们可以用数组名引用一系列变量,然后再通过下标索引方式访问具体元素。...一维数组在内存存储 我们都知道,内存地址是唯一且连续,而我们数组能通过下标访问元素,由此可以推断出数组在内存储存也是连续,具体元素地址也是唯一。  ...即列不能省略  ​​ 二维数组在使用时需要注意下标问题,因为是两个下标,所以在使用前可以先画图理解 二维数组在内存中存储 我们已经知道了一维数组在内存中是连续存放,那么二维数组是否也如此呢...//存储 int main() { int arr[2][2] = { 1,2,3,4 }; int i = 0; int j = 0; for (i = 0; i < 2; i++) {...C语言本身不做越界检查,编译器也不一定会报错,但如果出现下标越界,就意味着程序有错误,需要我们程序员去排查错误或者在编写代码阶段做好下标的检查,避免出现越界。

    15330
    领券