读书笔记
1、函数元素作为函数参数
当函数的形参类型与数组元素的类型相同时,数组元素与普通变量一样,可以作为函数实参,且由实参到形参的数据传递也是单向值传递
如
1 #include<stdio.h> 2 #define N 5 3 4 void swap(int x,int y) 5 { 6 int temp; 7 temp = x; 8 x = y; 9 y = temp; 10 } 11 12 int main() 13 { 14 int a = {1,2}; 15 printf("%d %d ",a[0],a[1]); 16 swap(a[0],a[1]); 17 printf("%d %d ",a[0],a[1]); 18 return 0; 19 }
结果为
1 1 2 2 1 2
由此可见,当数组元素作为函数的实参时,数组元素的值会自动初始化形参变量,当函数中的形参发生修改时,数组元素的值不会受到影响
2、数组名作为函数实参
常见函数首部格式定义为:
函数类型 函数名(数据类型 数组名[ ],int n);
如: void fun1(int a[ ] ,int n)
或:
函数类型 函数名 (数据类型 数组名[长度]);
如: void fun2 (int a[10])
3、定义数组输入、输出头文件
可以通过设计数组的输入、输出和随机数初始化数组的函数,存放在专门的头文件中,供程序调用,可提高编写效率
如:
可设计以下几个函数,并将其存放与Arry.h的头文件中
#ifndef _Arry_h
#define _Arry_h
#include<stdio.h>
#include<stdlib.h> void input(int a[] ,int a)
{
int i;
printf("请输入%d个整数,整数间用空格分隔: ",n);
for(i = 0;i < n;i++)
scanf("%d",a+i); //输入数组的前n个元素
}
void print(int a[],int n)
{
int i;
printf(" 数组内容是: ");
for (i = 0;i<n;i++)
{ if (i%10 = 0) printf(" "); //输入数组的前n个元素,每行输10个
printf("%6d",a[i]);
}
printf(" ");
}
void init(int a[],int n)
{
int i;
srand(time(0));
for (i = 0;i<n;i++)
a[i] = rand()%1000+1; //将数组的前n个元素用随机数初始化
}
#endif
在编写数组程序中,可以用指令将三个函数应用到程序中使用
1 #include'Arry.h' 2 #define N 10 3 4 int main() 5 { 6 int a[N]; 7 input(a,N); 8 printf(a,N); 9 return 0; 10 }