網站首頁 編程語言 正文
C語言超全面講解函數的使用方法下
一、函數的分類
1.庫函數
庫函數是C語言基礎庫為了方便程序員進行軟件開發而提供了一系列的函數,可以支持可移植性和提高程序的效率。
???注意:庫函數需要引頭文件。
例如:strlen函數的頭文件是<string.h>
2.自定義函數
自定義函數和庫函數一樣,有函數名、返回值類型和函數參數。但是不一樣的是,這些都是我們自己來設計,這給程序員一個很大的發揮空間?
??注意:這個函數是在庫函數之外的,是不需要引頭文件的。
3.庫函數的分類
- IO函數 : printf 、scanf 、getchar、putchar
- ?字符串操作函數 :strcmp、strlen
- 字符操作函數:toupper
- ?內存操作函數:memcpy、memcmp、memcet
- 時間/日期函數:time
- 數學函數:sqrt、pow
- 其他庫函數
二、函數調用
1.傳值調用
函數的形參和實參分別占有不同的內存塊,對形參的修改不會影響實參
#include<stdio.h>
void swap(int x, int y)
{
int z = 0;
z = x;
x = y;
y = z;
}
int main()
{
int a = 10;
int b = 20;
printf("交換前=%d %d\n", a, b);
swap(a, b);
printf("交換后=%d %d\n", a, b);
return 0;
}
??
2.傳址調用
傳址調用是把函數外部創建變量的內存地址傳遞地函數參數的一種調用函數方式。
這種操作可以讓函數和函數外邊的變量建立起真正的聯系,也就是函數內部可以直接操作函數外部的變量。
定義指針變量,以通過訪問地址的方式來交換a和b的值。
函數定義部分的參數接收到的是變量a和變量b的地址,并通過地址來改變他們兩個的值。
#include<stdio.h>
void swap(int * pa, int * pb )
{
int z = 0;
z = *pa;
*pa = *pb;
*pb = z;
}
int main()
{
int a = 10;
int b = 20;
printf("交換前=%d %d\n", a, b);
swap(&a, &b);
printf("交換后=%d %d\n", a, b);
return 0;
}
三、函數的聲明
告訴編譯器有一個函數,參數是什么?返回類型什么?但是具體是不是存在無關緊要。
函數的聲明一般出現在函數的使用之前,要滿足先聲明后使用。
函數的聲明一般要放在頭文件中。?
對函數聲明?
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
//函數的聲明 - 告知
int Add(int, int);
int c = Add(a, b);
printf("%d\n", c);
return 0;
}
//函數的定義
int Add(int x, int y)
{
return x + y;
}
四、函數定義?
函數的定義是指函數的具體實現,交代函數的功能實現 。
定義是一種更強有力的聲明
#include<stdio.h>
int add(int a, int b)//函數定義
{
return a + b;//返回a + b的值
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int c = add(a, b);//函數調用 - 計算a + b的值
printf("%d\n", c);
return 0;
}
五、函數的參數
1.形式參數(形參)
函數定義部分的參數是形參
2.實際參數(實參)
函數調用部分的參數是實參
六、函數的練習
1.用函數求兩個整數的較大值
難易程度:?
#include<stdio.h>
//求最大值 - 函數定義 - 傳參
int get_max(int score_one, int score_two)//函數形參
{
//如果score_one大于score_two就返回一個score_one的值
//否則就返回score_two的值
//返回的值即為最大值
return score_one > score_two ? score_one : score_two;
}
int main()
{
int score_one = 0;
int score_two = 0;
scanf("%d %d", &score_one, &score_two);
//求最大值函數 - 調用 - 并傳參
int max = get_max(score_one, score_two);//函數實參
printf("max=%d\n", max);
return 0;
}
2.用函數打印100~200之間的素數
難易程度:??
素數又叫質數,質數是指在大于1的自然數中,除了1和它本身以外,不能被其他自然數整除的數。
#include<stdio.h>
int is_prime(int i)
{
int j = 0;
for (j = 2; j < i; j++)//產生除了1和它本身的自然數
{
//拿i試除除了1和它本身的自然數
if (i % j == 0)//整除進入語句
{
return 0;//返回0
}
}
//i與所有除了1和它本身的自然數試除之后,返回的值就是素數
return 1;//返回1,就是返回素數的值
}
int main()
{
int i = 0;
int count = 0;//統計素數的個數
for (i = 100; i <= 200; i++)//產生100-200之間的數字
{
if (is_prime(i) == 1)//如果返回值等于1就進入語句
{
//打印的i就是素數
printf("%d ", i);
count++;//每一次打印i,count++
}
}
printf("\ncount = %d\n", count);
return 0;
}
3.用函數打印1000~2000之間的閏年
???注意? ?
- 能被4整除,并且不能被100整除
- 能被400整除
難易程度:??
#include<stdio.h>
int is_leap_year(int n)//打印1000-2000素數的實現
{
if (n % 4 == 0 && n % 100 != 0)//如果能被4整除,并且不能被100整除就進入語句
{
return 1;//返回1就是返回素數
}
else if (n % 400 == 0)//如果能被400整除就進入語句
{
return 1;//返回1就是返回素數
}
else
{
return 0;//返回0就不是素數
}
}
int main()
{
int i;
int count = 0;//統計閏年的個數
for (i = 1000; i <= 2000; i++)//產生1000-2000之間的數
{
if (is_leap_year(i) == 1)//如果返回的值等于1就進入語句
{
printf("%d ", i);//打印i就是打印閏年
count++;//閏年的個數++
}
}
printf("\ncount = %d\n", count);
return 0;
}
碼字不易,還請多多點贊支持呀!
有了你們的的點贊和關注我將會寫出更加優秀的文章。
原文鏈接:https://blog.csdn.net/m0_63033419/article/details/123948510
相關推薦
- 2022-04-05 C++繼承和動態內存分配_C 語言
- 2023-02-17 Python?樹表查找(二叉排序樹、平衡二叉樹)_python
- 2022-01-03 踩坑解決mongoose對已經存在的集合查詢,查詢條件不起限制作用的問題
- 2022-07-10 Popconfirm氣泡確認框無法觸發confirm函數
- 2022-03-14 瀏覽器獲取不到服務器端添加的Cookie
- 2023-01-07 C++中function的實現原理詳解_C 語言
- 2022-06-02 Apache?Hudi基于華米科技應用湖倉一體化改造_服務器其它
- 2022-09-19 Pytorch實現LSTM案例總結學習_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支