(一)值传递参数
- 传递后x y没有任何关系 都不会改变
#include<stdio.h>
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int x = 10;
int y = 20;
swap(x, y);
printf("x=%d, y=%d\n", x, y);
return 0;
}
(a)结果演示
(二)地址传递参数-代码
- 形参y是指针型变量 将x的地址赋给y y里存放的是x的地址
#include<stdio.h>
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int x = 10;
int y = 20;
swap(&x, &y);
printf("x=%d, y=%d\n", x, y);
return 0;
}
(b)结果演示
(三)数组元素做参数-代码
#include<stdio.h>
#pragma warning(disable:4996);
#define SIZE 10
int max(int x, int y) {
return(x > y ? x : y);
}
int main()
{
int max(int x, int y);
int arr[SIZE], m;
printf("请输入10个数:");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
printf("\n");
m = arr[0];
for (int j = 0; j < 10; j++) {
m = max(m, arr[j]);
}
printf("最大数是: %d\n", m);
return 0;
}
(c)结果演示
(四)数组名做参数
float average(int a[SIZE])
{
float sum = 0;
for (int i = 0; i < SIZE; i++)
sum = sum + a[i];
return(sum / SIZE);
}
int main()
{
int s[SIZE];
printf("请输入5个整数: \n");
for (int i = 0; i < SIZE; i++)
scanf("%d ", &s[i]);
float aver = average(s);
printf("平均值aver=%f \n", aver);
return 0;
}
(d)结果演示
-输完之后要输个东西才出结果