博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十、数组(1):一维数组
阅读量:4962 次
发布时间:2019-06-12

本文共 1927 字,大约阅读时间需要 6 分钟。

1、数组的使用

什么是数组?

——是一种容器(放东西的东西),特点是:

(1) 其中所有的元素具有相同的数据类型;

(2)  一旦创建,不能改变大小;

数组中的元素在内存中是连续依次排列的。

——可以出现在赋值的左边或右边

a[2]=a[1]+6;

 

定义数组

——<类型>  变量名称 [元素数量];

int grades[100];
double weight[20];

——元素数量必须是整数

C99之前:元素数量必须是编译时刻确定的字面量

 

数组的单元

——数组的每个单元就是数组类型的一个变量

——使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数:

grades[0];grades[99];average[5];
有效的下标范围

——编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写。

——一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃。(segmentation fault)

——但是可能运气好,没造成严重后果。

——所以这是程序员的责任来保证程序只适应有效的下标值:[0,数组的大小-1]。

长度为0的数组?

——int a[0];

——可以存在,但是无用。

2、数组的例子

投票统计

——写一个程序,输入数量不确定的【0,9】范围内的整数,统计每一种数字出现的次数,输入-1表示结束。

#include
int main(){ const int Number=10; //数组大小C99 int x; int count[Number]; //定义数组 int i; //初始化数组 for(i=0;i
=0&&x<=9){ count[x]++; //数组参与运算 } scanf("%d",&x); } //遍历数组输出 for(i=0;i

 

 

 

3、数组运算

——在一组给定的数据中,如何找出某个数据是否存在?

 

#include
/**找出key在数组a中的位置@param key 要寻找的数字@param a 要寻找的数组@param length 数组a的长度@return 如果找到,返回其在a中的位置; 返回如果找不到则返回-1 */int search(int key,int a[],int length);int main(){ int a[]={
2,4,6,7,1,3,5,9,11,13,23,14,32}; int x; int loc; printf("请输入一个数字:"); scanf("%d",&x); loc=search(x,a,sizeof(a)/sizeof(a[0])); if(loc!=-1){ printf("%d在第%d个位置上\n",x,loc); }else{ printf("%d不存在\n",x); } return 0;}int search(int key,int a[],int length){ int ret=-1; int i; for(i=0;i

数组的集成初始化
int a[]={
2,4,6,7,1,3,5,9,11,13,23,14,32};
数组的大小

——sizeof给出整个数组所占据的内容的大小,单位是字节。

sizeof(a)/sizeof(a[0])

——sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数。

 数组的赋值

——数组变量本身不能被赋值

int a[]={
2,4,6,7,1,3,5,9,11,13,23,14,32}; int b[]=a;//这是错误的。

——要把一个数组的所有元素交给另一个数组,必须采用遍历。

for(i=;i

 

遍历数组

——通常都是使用for循环。

 数组作为函数参数时,往往必须再用另一个参数来传入数组的大小。

int search(int key,int a[],int length);

——数组作为函数的参数时:

(1)不能在[]中给出数组的大小;

(2)不能再利用sizeof来计算数组的元素个数。

 

转载于:https://www.cnblogs.com/Strugglinggirl/p/9032672.html

你可能感兴趣的文章
Boosting(提升方法)之AdaBoost
查看>>
链接元素<a>
查看>>
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>
arraylist
查看>>