- 在計(jì)算機(jī)科學(xué)中,函數(shù)又被稱為子程序。子程序指的是一個大型程序中的某部分代碼,由一個或多個語句塊組成,它負(fù)責(zé)完成某項(xiàng)特定的任務(wù),并且相較于其他代碼而言,函數(shù)更具有相對獨(dú)立性。
- 函數(shù)一般會有輸入?yún)?shù)及返回值,并且提供了對過程的封裝和對細(xì)節(jié)的隱藏。這些代碼通常被集成為軟件庫。
- C語言中對于函數(shù)有兩種分類: 1. 庫函數(shù);2.自定義函數(shù)。
- 實(shí)際參數(shù)(實(shí)參):實(shí)際傳遞給函數(shù)的參數(shù)叫做實(shí)參;實(shí)參可以是常量,變量,表達(dá)式,函數(shù)等。無論參數(shù)是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形參。
庫函數(shù)
- 形式參數(shù)(形參):形式參數(shù)是指函數(shù)名后括號中的變量,因?yàn)樾问絽?shù)只有在函數(shù)被調(diào)用時才會實(shí)例化【分配內(nèi)存單元】,所以叫形式參數(shù)。形式參數(shù)在函數(shù)調(diào)用完成之后就自動銷毀,因此形式參數(shù)只在函數(shù)中有效。形參實(shí)例化之后相當(dāng)于實(shí)際參數(shù)的一份臨時拷貝。
- 在進(jìn)行開發(fā)的過程中,總有部分用于封裝基礎(chǔ)性功能的函數(shù)會被程序員頻繁調(diào)用,C語言為了支持其程序的可移植性和提高程序員編寫程序的效率,便在其基礎(chǔ)庫中提供了一系列庫函數(shù),以便于程序員進(jìn)行軟件開發(fā)。
- 語言中提供的函數(shù)基本上可以概括為:1.IO函數(shù)(scanf,printf,getchar,putchar);2.字符串操作函數(shù);3.字符操作函數(shù);4.內(nèi)存函數(shù);5.日期/時間函數(shù);6.數(shù)學(xué)函數(shù);7,其他庫函數(shù);
- 庫函數(shù)的使用必須包含其對應(yīng)的頭文件
#include#includeint main()
{char arr1[20] = {0 };
char arr2[] = "hello world!";
strcpy(arr1, arr2);
char * ret = strcpy(arr1, arr2);//ret接收的是目標(biāo)空間里所接收字符的起始位置
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;
}
自定義函數(shù)
- 自定義函數(shù)與庫函數(shù)一樣,都需要函數(shù)名,函數(shù)參數(shù),返回值類型。
- 傳值調(diào)用:函數(shù)的實(shí)參和形參分別占用不同的內(nèi)存塊,對形參的修改不會影響實(shí)參。
- 傳址調(diào)用:1.傳址調(diào)用是把函數(shù)外部創(chuàng)建的變量的內(nèi)存地址傳遞給函數(shù)形參的一種調(diào)用函數(shù)的方式。
2.這種傳參方式可以讓函數(shù)和函數(shù)外部的變量建立起真正的聯(lián)系,也就是函數(shù)內(nèi)部可以直接操作函數(shù)外部的變量。
#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指的是調(diào)用函數(shù)后無需返回,后一個void指的是這個函數(shù)沒有參數(shù),在調(diào)用時不能傳參
{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("找到了,下標(biāo)為:%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); //函數(shù)聲明
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;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
站在用戶的角度思考問題,與客戶深入溝通,找到汝城網(wǎng)站設(shè)計(jì)與汝城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋汝城地區(qū)。