06.数组
来源:互联网 发布:关键词共现网络的含义 编辑:程序博客网 时间:2024/05/16 05:54
一维数组
数组(Arrey):若干个相同类型数据的集合。
构成数组的数据称为数组的元素,不同元素通过下标作为唯一标识。
数组元素就相当于单个变量。这些元素的数据类型一样。
int a[4] = {1,2,3,4,5}; a[0]到a[5]则是5个单个变量,都是int型,可以直接用。
- 数组名也是标识符,不能和其他标识符和关键字重名。
- []是下标运算符,里面要放常量,从0开始数。
- 只能逐个使用数组元素,不能一次性使用整个数组。
- 数组元素的下标值不能超过数组定义的下标界,否则越界后的元素值是不确定的。还可能导致内存的非法访问异常(段错误),此时的下标表示元素在数组中的位置。
一维数组的初始化
- 全部初始化 int[3]={0,1,2};
- 部分初始化 未赋值的元素为0。 int[3]={0,1,2};其中a[3]=0;
- 只能逐个赋值,不能对整体赋值 a[3]={1,1,1,1};是错的。
- a[3]={0};可以,表示全0,因为未赋值的为0。
- a[]={1,2,3};如果不指定数组大小,编译器会根据初始化情况自动判断数组大小。
- 动态赋值:使用循环。for(i=0;i<10;i++)scanf(“%d”,&a[i]);
sizeof(数组)=sizeof(数组的元素)*元素的个数
二维数组:
链式存储,但是我们可以看成一个矩阵方便理解。
int m[2][3] = {{0,2,1,2},{1,2,3,2},{2,3,4,2}};
第一个元素为行(横),第二个为列(纵);
存储:行优先次序。即m[0][0]、m[0][1]…m[1][0]、m[1][1]….m[2][0]….m[2][3]。
多维数组存储:先变最右边下标,再依次变化左边的下标。
二维数组定义时可以省略一维的长度,但二维的长度必须给出。
如果列数据不够填充一行,其余的元素初始化为0。
int m[1][2] = {{1,2,3}{1}}; //m[1][1]、m[1][2]为0
数组名代表该数组的首元素地址,输入输出不用加&
字符数组(string):若干个字符构成的序列
a)输入:%s ;不要加&,输入串长度要小于数组维数,空格或回车结束,自动加‘\0’
get()输入 get(str);
函数功能:从键盘读入一个字符串到str中,并自动在末尾加‘\0’,输入字符串时以回车结束输入,故该函数可以读入含空格的字符串。
b)输出:格式化输出,到‘\n’结束(不会自动换行)
Put()输出 put(str);
函数功能:将字符数组str中包含的字符串或str所代表的字符串输出,同时将‘\n’转换成换行符。(会自动换行)
数组和函数
- 数组元素作为实参 元素只代表一个存储单元———>就相当于一个变量
- 数组名作为实参 数组名是一个地址值———>指针变量(传递数组的首地址)
此时要求实参与实参数组的类型、维数相同。进行的是地址的传递,即实参的首地址传给形参数组名。
数组名只给了首地址,没有开辟新的存储单元,只开辟了指针变量的存储单元 - 数组元素地址作实参 地址值———>指针变量(传递变量的指针)
- 06.数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 那些鲜为人知的JavaScript 技巧
- Redis vs memcached vs mongo
- 一个好用的图片预览框架
- apt-get 以及Ubuntu下的附加驱动这类包都下载在哪里
- CGRect, CGPoint,CGSize,CGAffineTransform,UIEdgeInsets,UIOffset与NSValue的相互转换
- 06.数组
- Apache2 httpd.conf 配置详解 (二)
- AngularJs过滤器
- gitlab sshkey
- Mybatis学习笔记---day04 mybatis与spring整合
- LeetCode | Merge Sorted Array
- IJCAI 10年(2007-2016)最佳论文合集
- 打字练习之进阶
- atoi() 与 itoa()函数的内部实现