1.函数的调用
(1)传值调用
对形参的改变叫做传值调用,对形参改变不会影响实参。
(2)传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变 量。简而言之,就是改变实参。
eg1:判断一个数是不是素数
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d 是素数\n", num);
}
else {
printf("%d 不是素数\n", num);
}
return 0;
}
eg2:判断一个年份是否为闰年
#include <stdio.h>
int is_Leap_Year(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
return 1;
}
else {
return 0;
}
}
else {
return 1;
}
}
else {
return 0;
}
}
int main() {
int year;
printf("请输入年份:");
scanf("%d", &year);
if (is_Leap_Year(year)) {
printf("%d是闰年\n", year);
}
else {
printf("%d不是闰年\n", year);
}
return 0;
}
eg3:打印1~100中所有的素数
#include <stdio.h>
int isPrime(int n) {
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
return n == 1 ? 0 : 1;
}
int main() {
for (int i = 1; i <= 100; i++) {
if (isPrime(i)) {
printf("%-4d", i);
}
}
}
2.函数的嵌套调用
嵌套调用指在函数中可以调用其他函数
#include <stdio.h>
void print() {
printf("打印函数\n");
}
void show() {
for (int i = 0; i < 3; i++) {
print();
}
}
int main() {
show();
}
3.链式访问
链式访问指把一个函数的返回值作为另外一个函数的参数。
#include <string.h>
#include <stdio.h>
int main() {
int len = strlen("Hello");
printf("%d\n", len);
// 链式访问
printf("%d\n", strlen("Hello"));
}