扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
- 在计算机科学中,函数又被称为子程序。子程序指的是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定的任务,并且相较于其他代码而言,函数更具有相对独立性。
- 函数一般会有输入参数及返回值,并且提供了对过程的封装和对细节的隐藏。这些代码通常被集成为软件库。
- C语言中对于函数有两种分类: 1. 库函数;2.自定义函数。
- 实际参数(实参):实际传递给函数的参数叫做实参;实参可以是常量,变量,表达式,函数等。无论参数是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
库函数
- 形式参数(形参):形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用时才会实例化【分配内存单元】,所以叫形式参数。形式参数在函数调用完成之后就自动销毁,因此形式参数只在函数中有效。形参实例化之后相当于实际参数的一份临时拷贝。
- 在进行开发的过程中,总有部分用于封装基础性功能的函数会被程序员频繁调用,C语言为了支持其程序的可移植性和提高程序员编写程序的效率,便在其基础库中提供了一系列库函数,以便于程序员进行软件开发。
- 语言中提供的函数基本上可以概括为:1.IO函数(scanf,printf,getchar,putchar);2.字符串操作函数;3.字符操作函数;4.内存函数;5.日期/时间函数;6.数学函数;7,其他库函数;
- 库函数的使用必须包含其对应的头文件
#include#includeint main()
{char arr1[20] = {0 };
char arr2[] = "hello world!";
strcpy(arr1, arr2);
char * ret = strcpy(arr1, arr2);//ret接收的是目标空间里所接收字符的起始位置
printf("%s\n", arr1);
printf("%s\n", ret);//字符串的打印只需要提供起始位置即可,打印到\0自动停止
return 0;
}
#include#includeint main()
{char arr[20] = "hello world!";
printf("%s\n", arr);
memset(arr,'x', 5);
printf("%s\n", arr);
return 0;
}
自定义函数
- 自定义函数与库函数一样,都需要函数名,函数参数,返回值类型。
- 传值调用:函数的实参和形参分别占用不同的内存块,对形参的修改不会影响实参。
- 传址调用:1.传址调用是把函数外部创建的变量的内存地址传递给函数形参的一种调用函数的方式。
2.这种传参方式可以让函数和函数外部的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。
#includeint get_max(int x, int y)
{if (x >y)
return x;
else
return y;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int c = get_max(a, b);
printf("%d\n", c);
return 0;
}
#includevoid test(void)//前一个void指的是调用函数后无需返回,后一个void指的是这个函数没有参数,在调用时不能传参
{printf("新春快乐!");
}
int main()
{test();
return 0;
}
#includeint main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a = %d,b = %d\n", a, b);
int tmp = 0;
tmp = a;
a = b;
b = tmp;
printf("交换后:a = %d,b = %d\n", a, b);
return 0;
}
#includevoid Swap(int* pa, int* pb)
{int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a = %d,b = %d\n", a, b);
Swap(&a, &b);
printf("交换后:a = %d,b = %d\n", a, b);
return 0;
}
#includeint get_max(int x, int y)
{if (x >y)
return x;
else
return y;
}
int main()
{int a = 0;
int b = 0;
int c = get_max(3, 4);
printf("%d\n", c);
return 0;
}
#includeint get_max(int x, int y)
{if (x >y)
return x;
else
return y;
}
int main()
{int a = 0;
int b = 0;
int c = get_max(3+7, 4);
printf("%d\n", c);
return 0;
}
includeint get_max(int x, int y)
{if (x >y)
return x;
else
return y;
}
int main()
{int a = 0;
int b = 0;
int c = get_max(get_max(3,7), 4);
printf("%d\n", c);
return 0;
}
#includeint is_leap_year(int num)
{if (num % 4 == 0 && num % 100 != 0)
{return 1;
}
if(num % 400 == 0)
{return 1;
}
return 0;
}
int main()
{int num = 0;
for (num = 1000; num<= 2000; num++)
{if (is_leap_year(num) == 1)
printf("%d ", num);
}
return 0;
}
#include#includeint is_prime(int i)
{int j = 0;
for (j = 2; j<= sqrt(i); j++)
{ if (i % j == 0)
{ return 0;
}
}
return 1;
}
int main()
{int i = 0;
for (i = 100; i<= 200; i++)
{if (is_prime(i) == 1)
{ printf("%d ", i);
}
}
return 0;
}
#includeint is_leap_year(int x)
{if (((x % 4 == 0) && (x % 100 != 0)) || (x % 400 == 0))
return 1;
else
return 0;
}
int main()
{int i = 0;
for (i = 1000; i<= 2000; i++)
{if (is_leap_year(i))
printf("%d ", i);
}
return 0;
}
#includeint is_leap_year(int x)
{return (((x % 4 == 0) && (x % 100 != 0)) || (x % 400 == 0));
}
int main()
{int i = 0;
for (i = 1000; i<= 2000; i++)
{if (is_leap_year(i))
printf("%d ", i);
}
return 0;
}
#includeint binary_search(int arr[], int k, int sz)
{int left = 0;
int right = sz-1;
while (left<= right)
{int mid = (left + right) / 2;
if (mid< k)
{ left = mid + 1;
}
else if (mid >k)
{ right = mid - 1;
}
else
{ return mid;
}
}
return -1;
}
int main()
{ int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr)/ sizeof(arr[0]);
int k = 7;
int pos = binary_search(arr, k, sz);
if (pos == -1)
printf("找不到");
else
{printf("找到了,下标为:%d\n", pos);
}
return 0;
}
#includevoid Add(int* n)
{*n = *n + 1;
}
int main()
{int num = 0;
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
return 0;
}
#includeint Add(int* p)
{
return (*p)++;
}
int main()
{int num = 0;
int c = Add(&num);
printf("%d\n", c);
return 0;
}
#includevoid line(void)
{printf("hehe\n");
}
void three_line(void)
{int i = 1;
for (i == 1; i<= 3; i++)
{line();
}
}
int main()
{three_line();
return 0;
}
#includeint main()
{printf("%d", printf("%d", printf("%d", 43))); //4321
printf("%d", printf("%d ", printf("%d", 43))); //4322
return 0;
}
#includeint Add(int a, int b); //函数声明
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int ret = Add(a, b);
printf("%d\n", ret);
return 0;
}
int Add(int a, int b)
{return(a + b);
}
#includeint Add(int a, int b)
{return(a + b);
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int ret = Add(a, b);
printf("%d\n", ret);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
站在用户的角度思考问题,与客户深入沟通,找到汝城网站设计与汝城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、虚拟主机、企业邮箱。业务覆盖汝城地区。我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流