@清晰掉 传递数组给函数

一维数组

传递数组给函数的3个原则

1.函数调用时只需传递数组名。

2.在函数定义中,形参的类型必须与数组的相同,数组的大小不必指定。

3.函数原型必须定义为参数是一个数组。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void sort(int x[], int m);
 4 int main()
 5 {
 6     int i;
 7     int marks[5] = {40, 90, 73, 81, 35};
 8      
 9     printf("Marks before sorting\n");
10     for(i = 0; i < 5; i++)
11           printf("%d ", marks[i]);
12     printf("\n");
13      
14     sort(marks, 5);
15     printf("Marks after sorting\n");
16     for(i = 0; i < 5; i++)
17           printf("%d ", marks[i]);
18     printf("\n");
19      
20     system("pause");
21 }
22  
23 void sort(int x[], int m)
24 {
25      int i, j , t;
26       
27      for(i = 1; i <= m-1; i++)
28         for(j =1; j <= m-i; j++)
29            if(x[j-1] >= x[j])
30            {
31               t = x[j-1];
32               x[j-1] = x [j];
33               x[j] = t;
34            }
35 }

二维数组

1.函数调用时只需传递数组名。

2.在函数定义中,必须使用两个方括号以表明数组为二维的。

3.必须指定数组第二个维的大小。

4.函数原型的定义必须与函数头相同。

 

//方法一, 形参给出第二维的长度。

//例如:

#include <stdio.h>

void func(int n, char   str[ ][5] )

{

int i;

for(i = 0; i < n; i++)

   printf("\nstr[%d] = %s\n", i, str[i]);

}

void main()

{

char* p[3];

char str[][5] = {"abc","def","ghi"};

func(3, str);

}

//方法二,形参声明为指向数组的指针。

//例如:

#include <stdio.h>

void func(int n, char  (*str)[5] )

{

int i;

for(i = 0; i < n; i++)

   printf("\nstr[%d] = %s\n", i, str[i]);

}

void main()

{

char* p[3];

char str[][5] = {"abc","def","ghi"};

func(3, str);

}

//方法三,形参声明为指针的指针。

//例如:

#include <stdio.h>

void func(int n, char **str)

{

int i;

for(i = 0; i < n; i++)

   printf("\nstr[%d] = %s\n", i, str[i]);

}

void main()

{

char* p[3];

char str[][5] = {"abc","def","ghi"};

p[0] = &str[0][0];

p[1] = str[1];

p[2] = str[2];

     func(3, p);

}

 

将字符串传递给函数

1.要传递的字符串必须在定义时声明为函数的形参。例如:

void display(char item_name[])

{

  ……

}

2.函数原型必须能表示参数是字符串。对于上面的函数定义,其原型可以写做:

void display(char str[]);

3.函数调用必须带一个无下标的字符串数组名作为其实参。例如:

display(name);

其中,name是在调用函数中已正确声明的字符串数组。

在C语言中,与数组一样,字符串不能按值传递给函数。

posted @ 2015-08-19 09:47  ysDu  阅读(239)  评论(0编辑  收藏  举报