1.函数之间参数传递的方式有_值传递_和_地址传递_。(富士安全)
2.简述:函数之间两种参数传递方式的区别
答:值传递将变量的值传递给函数,函数内部对参数的修改不会影响外部变量。而地址传递,传递变量的地址,函数内部对参数的修改会直接影响外部变量。
3.函数main 有那些参数?各代表什么含义? 假如程序a调用如下所示:a 123写出程序a中main 函数的参数的具体值。
参数有:argc和argv[]。argc:命令行参数的个数。argv[]:存放命令行参数的数组
假如执行命令a123,argc的值为2,argv[0]为123
4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值
思路:
①主函数中定义一维数组int a[]={11,8,89,7,5,4,32,15,21} , max , min;
②定义函数 void arr_max(int *a, int n,int *max); //a接收数组 n表示长度 max接收最大值
③定义函数 void arr_min(int *a, int n,int *min); //a接收数组 n表示长度 min接收最小值
④在主函数中输出最大值和最小值
#include <stdio.h> #include <string.h> #include <stdlib.h> void arr_max(int *a, int n, int *max) { *max = a[0]; for (int i = 1; i < n; i++) { if (a[i] > *max) { *max = a[i]; } } } void arr_min(int *a, int n, int *min) { *min = a[0]; for (int i = 1; i < n; i++) { if (a[i] < *min) { *min = a[i]; } } } int main(int argc, const char *argv[]) { int a[] = {11, 8, 97, 54, 32, 15, 21}; int max, min; arr_max(a, 7, &max); arr_min(a, 7, &min); printf("最大值: %d\n", max); printf("最小值: %d\n", min); return 0; }
5.用指针接收函数参数,编程序求二维数组的输入、输出、求最大值
思路:
1》主函数中定义二维数组 int a[3][4];
2》自定义函数void arr_input(int (*a)[4] , int H , int L);
3》自定义函数void arr_output(int (*a)[4] , int H , int L);
4》自定义函数void arr_max(int (*a)[4] , int H , int L);
5》主函数调用函数实现
#include <stdio.h> #include <string.h> #include <stdlib.h> void arr_input(int (*a)[4], int H, int L) { for (int i = 0; i < H; i++) { for (int j = 0; j < L; j++) { printf("输入二维元素 [%d][%d]: ", i, j); scanf("%d", &a[i][j]); } } } void arr_output(int (*a)[4], int H, int L) { printf("数组内容:\n"); for (int i = 0; i < H; i++) { for (int j = 0; j < L; j++) { printf("%d ", a[i][j]); } printf("\n"); } } void arr_max(int (*a)[4], int H, int L, int *max) { *max = a[0][0]; for (int i = 0; i < H; i++) { for (int j = 0; j < L; j++) { if (a[i][j] > *max) { *max = a[i][j]; } } } } int main(int argc, const char *argv[]) { int a[3][4]; int max; arr_input(a, 3, 4); arr_output(a, 3, 4); arr_max(a, 3, 4, &max); printf("最大值: %d\n", max); return 0; }