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’转换成换行符。(会自动换行)

数组和函数

  • 数组元素作为实参 元素只代表一个存储单元———>就相当于一个变量
  • 数组名作为实参 数组名是一个地址值———>指针变量(传递数组的首地址)
    此时要求实参与实参数组的类型、维数相同。进行的是地址的传递,即实参的首地址传给形参数组名。
    数组名只给了首地址,没有开辟新的存储单元,只开辟了指针变量的存储单元
  • 数组元素地址作实参 地址值———>指针变量(传递变量的指针)
0 0
原创粉丝点击