复习与补充一 数组、指针及动态存储分配 1、一维数组的定义与使用 2、数组与指针 3、数组与函数 4、二维数组及二维数组元素的不同表示 5、二维数组与二级指针 6、如何在函数中处理二维数组 7、动态存储分配
复习与补充一 1、一维数组的定义与使用 2、数组与指针 3、数组与函数 4、二维数组及二维数组元素的不同表示 5、二维数组与二级指针 6、如何在函数中处理二维数组 7、动态存储分配 数组、指针及动态存储分配
数组 数组是数据结构中最基本的结构类型 是一种顺序式的结构 是存储同一类型数据的数据结构 ·数组使用的是一种静态的内存空间配置
数组 • 数组是数据结构中最基本的结构类型 • 是一种顺序式的结构 • 是存储同一类型数据的数据结构 • 数组使用的是一种静态的内存空间配置
维数组的定义与使用 ·格式 定义格式:数据类型数组名长度自然数] 使用格式:数组名[整数] 数组的下标值为负数也可以! ·定义形式 仅定义数组,不指定初值; int a[5] 定义数组的同时指定初值; nta]={1,2,3}; 定义时由编译系统根据初值的个数确定元素个数。lnta[]={1,2,3,4,5} 例:b1Aray1
1、一维数组的定义与使用 • 格式 定义格式:数据类型 数组名[长度自然数] 使用格式:数组名[ 整数] • 定义形式 仅定义数组,不指定初值; int a[5]; 定义数组的同时指定初值; int a[5] = { 1, 2, 3}; 定义时由编译系统根据初值的个数确定元素个数。 Int a[ ] = { 1, 2, 3, 4, 5}; 数组的下标值为负数也可以! 例: b1_Array1
2、数组与指针 一维数组的数组名在程序中表示整个数组在内存中所占区域的首地址 数组中的元素是参照首地址来确定元素的存储位置。 指针的定义 定义格式:数据类型指针变量名; 指针变量与其他变量均占一定的存储空间,其值可以改变,只不过指针变量所对应的存 储空间内存放的是地址信息。 指针运算 求指向运算 加减整数的运算 作差运算 ·指针与一维数组的对应 int a[lo], *p p- a a, alil, &alil p, *p, p+i, *(p+i), pli] 例:Aray_ pointer
2、数组与指针 一维数组的数组名在程序中表示整个数组在内存中所占区域的首地址, 数组中的元素是参照首地址来确定元素的存储位置。 • 指针的定义 定义格式: 数据类型 指针变量名; 指针变量与其他变量均占一定的存储空间,其值可以改变,只不过指针变量所对应的存 储空间内存放的是地址信息。 • 指针运算 求指向运算 加减整数的运算 作差运算 • 指针与一维数组的对应 int a[10], *p; p = a; a, a[i], &a[i], p, *p, p+i, *(p+i), p[i] 例: Array_pointer
3、数组作为函数参数 #include <stdio h> int sum( int *p, int n 函数中用指针参数接收数组地址 参数形式也可以是:intp[或ntp[10],但 int 1 m: 无论怎样,函数中的参数都是局部指针变 for(m=0,i=0;i<n;i++)量。调用函数时的参数传递相当于给该指 m+*(p+i1); 针参数赋值 return m void maino inta[10]={1,2,3,4,5,6,7,8,9,10} printf(%d\n", sum(a, 10)) 调用函数时传递数组地址 例:Aray_ function
3、数组作为函数参数 #include <stdio.h> int sum( int *p, int n) { int i, m; for(m = 0, i = 0; i < n; i++) m = m + *(p+i); return m; } void main() { int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; printf("%d\n", sum(a, 10)); } 函数中用指针参数接收数组地址 参数形式也可以是:int p[]或int p[10],但 无论怎样,函数中的参数都是局部指针变 量。调用函数时的参数传递相当于给该指 针参数赋值。 调用函数时传递数组地址 例: Array_function