向函数传递一维数组

读书笔记

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\t%d\n",a[0],a[1]);
16     swap(a[0],a[1]);
17     printf("%d\t%d\n",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",n);
   for(i = 0;i < n;i++)
     scanf("%d",a+i);                    //输入数组的前n个元素
}  
void print(int a[],int n)
{
  int i;
  printf("\n数组内容是: \n");
  for (i = 0;i<n;i++)
    {  if (i%10 = 0)  printf("\n");         //输入数组的前n个元素,每行输10个
       printf("%6d",a[i]);
    }
  printf("\n");
}
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 }

 

posted @ 2020-09-26 21:25  楸壳  阅读(697)  评论(0编辑  收藏  举报