一维和多维数组的创建和使用

 2024-03-07 02:05:07  阅读 0

数组是构造数据类型之一

一维数组 一维数组的定义

如何定义:

例子:

int arr[] = {1,2,3,4,5,6,7,8,9,10}; // 定义一个可以存储10个元素的整数数组

一维数组参考

1、数组必须先定义后使用。

2. 只能逐一引用数组元素,不能一次引用整个数组。

3、数组元素表示:数组名[下标],下标可以是常量,也可以是整数表达式。

例子:

一维数组的初始化

1> 定义数组时,给所有元素赋初始值。 这称为“完全初始化”。 例如:

int a[5] = {1, 2, 3, 4, 5};

通过将数组元素的初始值放在一对大括号中,初始化后,a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5,即从左到右依次分配给每个元素。 需要注意的是,初始化时,各个元素之间是用逗号分隔的,而不是分号。

2>可以只给部分元素赋值,这称为“不完全初始化”。 例如:

int a[5] = {1, 2};

定义的数组a有5个元素,但是大括号内只提供了两个初始值,也就是说只初始化了前两个元素a[0]和a[1],而后三个元素没有初始化。 未完全初始化时,未初始化的元素会自动设置为0。

初始化字符数组的方法有很多种;

char arr1[5]={'H','e','l','l','o'};

char arr2[10]="你好"; // 此时数组中第6个元素的值为'\0'

char arr2[8]={'a',98};

3> 如果在定义数组时给数组中的所有元素赋了初始值,那么就不需要指定数组的长度,因为此时元素的个数已经确定了。 例如:

// int a[5] = {1, 2, 3, 4, 5}; int a[] = {1, 2, 3, 4, 5};

一维数组在内存中的存储

代码:

我们观察输出结果。 随着数组下标的增加,元素的地址也有规律地增加。 由此我们可以得出结论,数组是连续存储在数组中的。

示例:使用冒泡法对10个数字进行排序

问题解决过程如下:

二维数组的创建和初始化

例子:

int arr[3][4]={1,2,3,4};

int arr[3][5]={{1,2},{4,5}};

int arr[][4]={{2,3},{1,2}};

二维数组的使用

二维数组的使用也是通过下标来实现的。

二维数组在内存中的存储

通过结果分析,实际上二维数组在内存中也是连续存储的。

程序示例1:交换一个二维数组的行和列元素,并将它们存储到另一个数组中

问题解决过程如下:

示例2:查找二维数组中的最大元素值及其行列数

解决问题如下:

运算符和表达式 1. 算术运算符

+ - * / %

除了 % 运算符之外,其他几个运算符也可以对整数和浮点数进行运算。

对于/运算符,如果两个操作数都是整数,则进行整数除法。只要有浮点数,就进行浮点除法。

%运算符的两个操作数必须是整数,返回值为整数除法后的余数。

2. 移位运算符

移动的是二进制,数据以二进制补码形式存储在内存中。

原码、补码和正整数的补码是相同的。

原码、补码、负整数补码如下:

> 右移运算符

右移运算有两种类型:

1>逻辑移位:丢弃右边,左边补0

2>算术移位:丢弃右侧,对左侧符号位求补

右移运算(算术移位)相当于除以 2

警告:对于移位运算符,不要移动负数位,这不是由标准定义的。

整数数 = 10;

数 >> -1; // 错误

3. 位运算符

& 按位与

| 按位或

^ 按位异或

[操作数必须是整数]

#

int main()

整数 num1 = 3;

整数 num2 = 5;

int = num1 & num2;

("num1 & num2 = %d\n",);

int = num1 | 数字2;

("num1 | num2 = %d\n", );

int = num1 ^ num2;

("num1 ^ num2 = %d\n", );

区分逻辑与(OR)和按位与(OR)

#

int main()

/* C语言如何表达真假?

真---->非0

假---->0

*/

整数a = 10;

整数 b = 20;

int c = a && b; //逻辑与

("%d\n",c); // 1

int 标志 = !a; // 逻辑否定

(“%d\n”,标志); // 0

0;

复合赋值运算符:

+=、-=、*=、/=、%=、>>=、

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码