数组是:

  • 一组数据
  • 一组类型相同的数据
  • 在计算机底层,数组是一块连续的内存

为什么使用数组?

一年12个月

int m1=1, m2=2, m3=3, ... 麻烦

数组示例:

#include <stdio.h>
int main(int argc, char *argv[]) {
// 数组赋值
int month[] = {1,2,3,4,5,6,7,8,9,10,11,12}; // 求数组长度
int len = sizeof(month)/sizeof(int); // 访问数组元素
int i =0;
for(i =0; i<len; i++) {
printf("%d月_", month[i]);
}
return 0;
}

注意数组不要越界

数组越界,C语言不管!

比如下例中,变量_test会被循环破坏!

#include <stdio.h>
int main(int argc, char *argv[]) {
char arr[3];
int _test = 1; printf("循环前:_test = %d\n", _test);
int i = 1;
for(i = 0 ; i<10; i++) {
arr[i] = 9;
}
printf("循环后:_test = %d\n", _test); return 0;
}

循环后的结果并不是确定的:

循环前:_test = 1
循环后:_test = 2313

使用函数输出数组

C语言中,函数内无法获取数组长度,需要把数组的长度通过参数传入。

#include <stdio.h>

//返回值:void
//数组作参数:int arr[]
//声明简化:int[]
//需要传数组元素的个数
void printArray(int[],int); int main(int argc, char *argv[]) {
int a[5]= {1,3,5,7,9};
// 先求数组元素的个数
int nLen = sizeof(a)/sizeof(int) ;
printArray(a, nLen); return 0;
} void printArray(int arr[],int len) {
int i=0;
for(i = 0; i<len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

数组的赋值

*注意:纯C语言中,[变量/const常量]不能用于定义数组长度,C++中可以。本例使用宏定义来表示数组长度。

#include <stdio.h>
#define ARR_LEN 5
void printArray(int[],int); int main(int argc, char *argv[]) {
// 分别赋值
int a[]= {1,3,5,7,9};
printArray(a, ARR_LEN); // 统一赋值
int b[ARR_LEN]= {0};
printArray(b, ARR_LEN); // 循环赋值
int c[ARR_LEN];
int i = 0;
for(i; i<ARR_LEN; i++ ) {
c[i]=i*10;
}
printArray(c, ARR_LEN); return 0;
} void printArray(int arr[],int len) {
int i=0;
for(i = 0; i<len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

C语言讲义——数组的更多相关文章

  1. C语言讲义——数组和指针

    数组名表示的是这个数组的首地址.即如果有int a[10],则a 相当于&a[0]. #include <stdio.h> main() { int a[5]= {1,3,5,7, ...

  2. 【算法】C语言实现数组的动态分配

    C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...

  3. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  4. go语言的 数组、slice、map使用(转)

    golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...

  5. go语言 类型:数组

    在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...

  6. C语言基础--数组及相关

    概念: 一堆相同类型的数据的有序集合 格式: 元素类型  数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...

  7. 学习C语言的数组

    C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...

  8. 对于C语言中数组名是指针的理解

    我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...

  9. c语言中数组相关问题

    c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...

随机推荐

  1. C#基础访问修饰符概述

    前言: 在编写面向对象语言时我们时长离不开相关类型和成员的相关访问性,而访问性的关键则是取决于访问修饰符的声明,其作用是用于指定类型或成员的可访问性. 访问修饰符的六种可访问性级别: public:共 ...

  2. 运行Apache时出现the requested operation has failed

    在修改自己主机E:\wamp\apache\conf中的httpd.conf中的站点位置后,重新运行Apache时,出现对话框提示"the requested operation has f ...

  3. TCP/IP 基础知识

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 已提交此篇文章 要说我们接触计算机网络最多的协议,那 ...

  4. STM32移植FreeRTOS(1)

    "STM32F103VET6<_>FreeRTOS" 1.项目功能实现 1)LED灯定时闪烁 2)KEY按键检测 3)FreeRTOS任务创建 4)串口输出程序运行状态 ...

  5. python实现非常有趣的数学问题

    1.无重复数字的三位数 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? import itertools ret = [] for i in range(1, 5) ...

  6. python爬虫爬取策略

    爬取策略 关注公众号"轻松学编程"了解更多. 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那 ...

  7. Mybatis之plugin插件设计原理

    大多数框架,都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外. 我们从插件配置.插件编写.插件运行原理.插件注册与执行拦截的时机.初始化插件.分页插件的原理等六个方面展开阐述. 一 ...

  8. windows编译openssl(64位)一游

    编译openssl,一套标准流程: (环境:  win10 64位os, vs2019) 需要的工具:perl     nasm   openssl源码包 1  安装perl 2  下载nasm,将n ...

  9. vue3.0-如何切换路由-路由模式ts

    如何更换路由模式 vue3版本如何切换路由模式?(注:更改后要重启下项目才能看到效果.) 博主,我搜了大半天的,你是怎么找到的? 如下图可看到

  10. Azure DevOps 扩展之 Hub 插件的菜单权限控制配置

    这是 Hub 插件的描述配置代码片段: { "contributions": [ { "id": "feature-hidden-fields-man ...