C语言数组的创建和使用
C语言数组的创建和使用
- 数组是一组相同类型元素的集合。
一维数组的创建及初始化
//创建int类型的数组
//直接创建:不对数组进行初始化
int arr1[10];
//最常用、好用的创建方式
int arr2[10] = { 0 }; //所有元素都被初始化为0
//完全初始化,创建时对每个元素都进行初始化
int arr3[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//不完全初始化,创建时只对其中几个元素进行初始化,其余元素默认被初始化为0
int arr4[10] = { 0, 1, 2, 3, 4 };
//对指定元素进行初始化
int arr5[10] = { [5] = 6 };
//不指定元素个数,数组的大小由创建时初始化元素个数决定
int arr6[] = { 0, 1, 2 };
一维数组的使用
对这六个数组的元素进行逐个打印:
//Print the array
void PrintArr(int sz ,int arr[])
{
int i = 0;
for (i = 0 ; i < sz ; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
效果如下:

一维数组在内存中的存储形式
数组名为数组首元素地址
对刚才创建的六个数组的数组名进行打印
printf("%p\n",arr1);
printf("%p\n",arr2);
printf("%p\n",arr3);
printf("%p\n",arr4);
printf("%p\n",arr5);
printf("%p\n",arr6);
结果如下:

- 数组在内存中是连续存放的。
对其中一个数组的元素的地址逐个打印:
int i = 0;
for (i = 0; i < 10 ;i++ )
{
printf("&arr1[%d] : %p\n", i, &arr1[i]);
}
结果如下:

二维数组的创建及初始化
//直接创建:不对数组进行初始化
int arr7[3][4];
//完全初始化,创建时对每个元素都进行初始化
int arr8[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
//不完全初始化,创建时只对其中几个元素进行初始化,其余元素默认被初始化为0
int arr9[3][4] = { 0, 1, 2, 3, 4, 5, 6 };
//所有元素都被初始化为0
int arr10[3][4] = { 0 };
int arr11[3][4] = { {0 , 1 } , { 3 , 4} } ;
二维数组的使用
对这五个二维数组的元素进行逐个打印:
int i, j;
printf("arr7:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d ",arr7[i][j]);
}
printf("\n");
}
...
结果如下:

二维数组在内存中的存储形式
- 二维数组在内存中的存储形式逻辑上是这样的:

- 实际上和一维数组一样,是连续的

int i = 0;
for(i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("&arr8[%d][%d] : %p\n", i, j, &arr8[i][j]);
}
}
结果如下:

C语言数组的创建和使用的更多相关文章
- Numpy 学习之路(1)——数组的创建
数组是Numpy操作的主要对象,也是python数据分析的主要对象,本系列文章是本人在学习Numpy中的笔记. 文章中以下都基于以下方式的numpy导入: import numpy as np fro ...
- GO语言数组和切片实例详解
本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...
- Go语言数组的使用
Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0 ...
- Go语言数组和切片的原理
目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
- Go语言数组
目录 声明数组 数组在内存的结构 初始化数组 使用数组 函数间传递数组 数组使用注意事项 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类 ...
- go语言数组与切片比较
一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式:[length]Type .[N]Type{value1, value2, . ...
- javascript数组操作(创建、元素删除、数组的拷贝)
这篇文章主要介绍了javascript数组操作,包括创建.元素的访问.元素删除.数组的拷贝等操作,还有其它示例,需要的朋友可以参考下 1.数组的创建 复制代码 代码如下: var arrayObj = ...
- C语言数组和函数实例练习(一)
C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识. 1.数组 数组中的元素具有相同的数据类型:数组一旦创建,不能被改变:数组中元素在内 ...
- Java中数组的创建
Java中数组的使用 1.普通数组变量的定义: //数组 //1.数组是Java中很重要的一部分,今天对数组进行了大致的了解,Java中的数组和C中数组还是有一定的区别的 //以下是总结的几种方法 p ...
随机推荐
- 【java虚拟机】类加载机制
作者:平凡希 原文地址:https://www.cnblogs.com/xiaoxi/p/6959615.html 一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中, ...
- C语言实现类似C++的容器vector
C语言也能面向对象?不是C++是面向对象的么?其实C语言也能抽象成简单的面向对象方法,在Linux内核源码当中,底层的驱动代码.文件系统等皆采用了面向对象的封装技术,这样的好处是将客观的东西抽象出来, ...
- 不同的 count 用法
不同的 count 用法效率:在 select count(?) from t 这样的查询语句里面, count(*).count(主键 id).count(字段) 和 count(1) 等不同用法的 ...
- Linux centos 安装 mysql 5.7
一.mysql下载 1.方式一(简单粗暴) 直接在linux 目录下:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-l ...
- Linux下MySQL主从复制(GTID)+读写分离(ProxySQL)-实施笔记
GTID概念: GTID( Global Transaction Identifier)全局事务标识.GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文 ...
- 腾讯云 TKE Everywhere 特性发布,用户可在自有基础设施中托管 K8s 服务
作者 孔令飞,腾讯云资深工程师,拥有大规模 Kubernetes 集群.微服务的研发和架构经验,目前专注于云原生混合云领域的基础架构开发. 朱翔,腾讯云容器服务高级产品经理,目前负责云原生混合云产品方 ...
- T-SQL - 习题02_将数据表year|month|amount查询成year|m1|m2|m3|m4的样式
时间:2017-09-11 整理:byzqy 题目:有个年度统计表,结构如下: 怎么样把这个表,查询成这样一个结果: 这是在面试过程中遇到的一个关于数据库的题,没有一点思路,不知它考查到的知识点是什么 ...
- 分布式技术专题-分布式协议算法-带你彻底认识Paxos算法、Zab协议和Raft协议的原理和本质
内容简介指南 Paxo算法指南 Zab算法指南 Raft算法指南 Paxo算法指南 Paxos算法的背景 [Paxos算法]是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息 ...
- QT之ARM平台的移植
在开发板中运行QT程序的基本条件是具备QT环境,那么QT的移植尤为重要,接下载我将和小伙伴们一起学习QT的移植. 一.准备材料 tslib源码 qt-everywhere-src-5.12.9.t ...
- 浅谈 JVM GC 的安全点与安全区域
OopMap 前文我们说到,JVM 采用的可达性分析法有个缺点,就是从 GC Roots 找引用链耗时. 都说他耗时,他究竟耗时在哪里? GC 进行扫描时,需要查看每个位置存储的是不是引用类型,如果是 ...