C语言基础之数组
来源:互联网 发布:小阴唇肥大 知乎 编辑:程序博客网 时间:2024/05/16 08:42
一、基本概念
数组是用来存储多个类型相同的数据的数据结构——容器。
1、多个,类型相同。
2、数组是一段连续的内存区域。
3、数组变量的本质就是其首字节的地址。
4、数组是数据的容器,而非数据本身。
5、数组中的每个数据项被称为数组的元素,一个数组包括一到多个元素。数组中元素的个数被称为数组的长度。
6、数组下标就是元素在数组中的索引号,从0开始。
7、数组元素通过数组名和下标的组合进行访问,[]叫做下标运算符:数组名[下标],表示数组中第“下标”个元素。
二、数组的定义
元素类型 数组名[长度(元素个数)]={初始化表};
int arr[10];//0-9
arr是个数组,其中包含10个元素,每个元素都是int类型的。
类型定义:从近到远,由右向左,括号优先。
arr[0]=100;//将100赋值给arr数组的第0个元素。
printf(“%d”,arr[8]);//打印arr数组的第8个元素。
有效元素:arr[0],arr[1],…arr[9]
printf(“%d”,arr[10]);//越界
arr[10]=100;//可能引发错误
arr[12]=200;//可能引发错误
arr[i]是数组元素,i是数组元素的下标,从0到数组的长度-1。超出此范围,将导致段错误或者覆盖其他变量。
三、一维数组的使用
1、数组的初始化
int arr[10]={1,2,3,4,5,6,7,8,9,10};
依次取初始化表中的值对数组中的每个元素进行初始化。
int arr[10]={1,2,3}
初始化没有显示指明初始值的元素,一律初始化为零。
int arr[10]={0};//全部初始化为0
int arr[10]={};//全部初始化为0
int arr[10];不做初始化
如果在定义数组时不指定长度,则取初始化表的长度作为数组的长度。
int arr[]={1,2,3,4,5};//等价于int arr[5]={1,2,3,4,5};
int arr[];//错误
计算数组长度:sizeof(arr)/sizeof(arr[0])
四、二维数组的初始化
1、分行给二维数组赋初值
eg:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2、可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。
eg:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3、可以对部分元素赋初值
eg:int a[3][4]={{1},{5},{9}};
其作用是只对各行第一列(即序号为0的列)的元素赋初值,其余元素自动为0。
也可以对各行中的某一元素赋初值
eg:int a[3][4]={{1},{0,6},{0,0,11};
4、如果全部元素都赋初值(即提供全部初始数据),即定义数组时对第一维的长度可以省略,但第二维的长度不能省略。
eg:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
可以写成int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
不可以写成int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12};//error
五、字符数组
1、定义:用来存放字符数据的数组是字符数组。
2、字符数组的初始化
数组长度可以自动省略
eg:char c[]={‘I’,”,’a’,’m’,”,’h’,’a’,’p’,’p’,’y’};
3、字符数组的输入输出
(1)逐个字符输入输出,用格式符“%c”输入或者输出一个字符。
(2)将整个字符串一次输入或者输出,用”%s”格式符,意思是对字符串(string)的输入输出。
eg:char c[]={“China”};
printf(“%s\n”,c);
(1)函数的返回类型不能为一个数组类型。
(2)局部数组,具有局部作用域,函数调用结束之后,数组也就被操作系统摧毁了。
将一个二维数组的行和列互换#include<stdio.h>int main(){int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("arr a:\n");for(i=0;i<=1;i++)//处理a数组中的一行各元素{for(j=0;j<=2;j++)//处理a数组中某一列元素{printf("%5d",a[i][j]);//输出a数组中各元素b[j][i]=a[i][j];}printf("\n");}printf("arr b:\n");//输出b数组各元素for(i=0;i<=2;i++){for(j=0;j<=1;j++){printf("%5d",b[i][j]);}printf("\n");}return 0;}
输出一个已知的字符串#include<stdio.h>int main(){char a[15]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};int i;for(i=0;i<15;i++){printf("%c",c[i]);}printf("\n");return 0;}
- C语言基础之数组
- C语言基础之数组
- C语言基础之数组
- C语言基础之数组
- C语言基础之数组
- c语言基础例题之字符数组
- C语言基础之数组、字符串、指针
- C语言基础之指针与数组
- C语言基础练习之数组
- C语言基础:数组
- C语言-数组基础
- c语言基础之指针与一维数组
- 黑马程序员_iOS开发C语言基础之数组
- 黑马程序员IOS基础---C语言学习之数组
- 黑马程序员-C语言基础之结构体数组
- 黑马程序员——c语言基础之数组
- ioS开发之c语言基础-多维数组,字符串
- C语言之数组
- Java基础拾遗(二)
- Redis学习手册--持久化机制
- css3 2d/3d变换——实现超炫的特效
- 《unity手机游戏开发》4.7敌人Object reference not set to an instance of an object
- 7.29笔试
- C语言基础之数组
- 博客搬家
- 【简记】Java Web 内幕——SpringMVC总体介绍,部分源码解析
- 【C#机房重构】三层TO七层
- 行人再识别(行人重识别)【包含与行人检测的对比】
- 一些字符串操作函数的模拟实现
- BZOJ 1059: [ZJOI2007]矩阵游戏 二分图匹配
- Window操作系统下的SSL证书管理
- idtech4引擎简介