C语言讲义——数组
数组是:
- 一组数据
- 一组类型相同的数据
- 在计算机底层,数组是一块连续的内存

为什么使用数组?
一年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语言讲义——数组的更多相关文章
- C语言讲义——数组和指针
数组名表示的是这个数组的首地址.即如果有int a[10],则a 相当于&a[0]. #include <stdio.h> main() { int a[5]= {1,3,5,7, ...
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- C语言一维数组、二维数组、结构体的初始化
C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...
- go语言的 数组、slice、map使用(转)
golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...
- go语言 类型:数组
在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...
- C语言基础--数组及相关
概念: 一堆相同类型的数据的有序集合 格式: 元素类型 数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...
- 学习C语言的数组
C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
- c语言中数组相关问题
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...
随机推荐
- java数据结构-07栈
一.什么是栈 栈是一种线性结构,栈的特点就是先进后出(FILO):就像弹夹装子弹一样,最先压进去的在最底下,最后才被射出. 二.相关接口设计 三.栈的实现 栈可以用之前的数组.链表等设计,这里我使 ...
- viewpage和tablayout导航栏
引入material库: implementation 'com.google.android.material:material:1.2.1' <?xml version="1.0& ...
- 全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞
大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排名第 ...
- STM32入门系列-使用库函数点亮LED软硬件分析
电路图分析 首先找来单片机的原理图,根据原理图进行相关的设计工作. 例如在上图中相同网络标号表示它们是连接在一起的,因此D1发光二极管阴极是连接在STM32的PC0管脚上,D2指示灯阴极连接在PC1管 ...
- python进程间共享数值、字典、列表变量
##python进程间共享数值.字典.列表变量 关注公众号"轻松学编程"了解更多. import multiprocessing def worker(num, mgr_dict, ...
- 【QT】 QThread部分源码浅析
本文章挑出QThread源码中部分重点代码来说明QThread启动到结束的过程是怎么调度的.其次因为到了Qt4.4版本,Qt的多线程就有所变化,所以本章会以Qt4.0.1和Qt5.6.2版本的源码来进 ...
- python开发--基础知识-(持续更新)
python基础 --基础: 1, 第一句python - 用cmd 调用--python (路径)+(文件名)) 扩展名是任意的 - 导入模块是,如果不是.py文件,可能导入不成功 - python ...
- 转载:WIFI无线协议802.11a/b/g/n/ac的演变以及区别
WIFI无线协议802.11a/b/g/n/ac的演变以及区别 版权声明:版权所有,转载须注明出处. https://blog.csdn.net/Brouce__Lee/article/details ...
- 经典分治问题,平面N个点求最近点对
大家好,我们今天来看一道非常非常经典的算法题--最近点对问题. 这个问题经常在各种面试当中出现,难度不低,很少有人能答上来.说实话,我也被问过,因为毫无准备,所以也没有答上来.是的,这道题有点神奇,没 ...
- C++的四种强制转型形式:
C++同时提供了四种新的强制转型形式(通常称为新风格的或C++风格的强制转型): const_cast(expression)dynamic_cast(expression)reinterpret_c ...