函数
1、函数的基本概念
- 函数是一种用来完成特定任务的代码块,可以被多次调用
- 函数的作用:提高代码复用性,简化复杂程序,增强可读性
函数的语法结构:
返回值 函数名(参数列表)
{
//函数体
}
2、函数的声明和定义
函数的声明:在使用函数前,需要声明它的返回类型和参数列表。
返回值 函数名(参数列表) ;
函数定义:完整的函数实现,包括函数体
3、函数的参数和返回值
#include <stdio.h>
int main()
{int a=10;int b=20;int sum=add(a,b);printf("%d", sum);return 0;
}int add(int a, int b)
{int c=a+b;return c;
}
main函数里调用add(a, b)
其中的a,b就是实参 ,add是调用函数
函数声明里面int add(int a, int b)的int a ,int b 叫做形参
4、传值调用与传址调用
传值调用:将参数的值传递给函数,函数内部对参数的修改不会影响外部变量。
# include <stdio.h>
void modify(int x)
{x=20;
}
int main()
{int num=10;printf("modify前, num=%d\n", num);modify(num);printf("modify后,num=%d\n", num);return 0;
}
传址调用:将参数的地址传递给函数,函数内部可以修改实际的变量值(通过指针)。
#include <stdio.h>
void modify(int* x)
{*x=20;
}
int main()
{int num=10;printf("modify前, num=%d\n", num);modify(&num);printf("modify后,num=%d\n", num);return 0;
}
5、数组与函数
数组作为函数参数时,传递的是数组的首地址,因此数组作为参数时,函数内的修改会影响源数组。
#include <stdio.h>
void Modify(int arr[5])
{for (int i=0; i<5; i++){arr[i] = arr[i] * 10;}
}int main()
{int arr[5]={1, 2, 3, 4, 5};for (int i=0; i<5; i++){printf("%d ", arr[i]);}printf("\n");Modify(arr);for (int i = 0; i<5; i++){printf("%d ", arr[i]);}return 0;
}
真题
在c程序中,main()函数的位置
A、必须作为第一个函数
B、必须作为第二个函数
C、可以任意
D、必须放在它所调用的函数之后
选C
当调用函数时,实参是一个数组名,则向函数传送的是
A、数组的长度 B、数组的首地址
C、数组的每一个元素的地址 D、数组的每个元素中的值
答案是:B
代码题:判断一个整数是否为素数
编写程序,其中自定义一个函数,用来判断一个整数是否为素数,主函数输入一个数
#include<stdio.h>//如果是素数,返回1,不是素数,返回0
int IsPrimeNumber(int number)
{if (number <=1){return 0;}for (int i=2; i<number; i++){if (number %i ==0){return 0;}}return 1;
}int main()
{int number ;printf("请输入一个整数:\n");scanf("%d", &number);int ret = IsPrimeNumber(number);if (ret==0){printf("%d 不是一个素数.", number);}else{printf("%d 是一个素数.", number);}return 0;
}