一维数组
传递数组给函数的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语言中,与数组一样,字符串不能按值传递给函数。
时间: 2024-10-29 19:12:27