網站首頁 編程語言 正文
問題引入
有時候,我們經常需要在一個程序中,對一個數組進行
鍵盤輸入,打印數組元素值。
有些代碼塊,功能是相同的,只有數組名和元素個數等參數不一樣,
代碼形式是一樣的,對于同一功能而不同參數的代碼塊,那么咱就可以
將其封裝成一個函數,如果您需要用到這樣的功能或者代碼塊,那么我們
就不需要重復的去寫代碼塊,我們只需要調用這個函數。
函數
- 函數是完成某個功能的指令序列的封裝。
- 函數有什么特點:
- 相同功能的代碼塊,重復利用、模塊化思想。
C語言中函數的語法形式
函數返回值類型 函數名(輸入參數列表) --> 函數頭
{
函數的具體實現 --> 函數體
}
“函數返回值類型”:
函數最終返回的結果的類型。
“單值類型” : 結果用一個寄存器或兩個寄存器可以保存的值。
int / long
void : 表示該函數無返回值。(void不可以省略)
問題
return語句后面的那個表達式的值,就是函數調用表達式的值。
但是有些函數并沒有返回值,難道說這個函數調用表達式的值沒有值嗎?
函數調用表達式任然會有一個值,只不過我們不知道這個值時多少,R0中
一定會有一個確定的值(undefine,未知)
例子
void print_array(int a[], int n)
{
int i;
for(i = 0 ; i < n ; i++)
{
printf("%d ", a[i]);
}
printf("\n");
//return ;
}
“函數名” : C語言中標識符的規定。
?? ??? ??? ? ? array_sum?
?? ??? ??? ? ? Shuzu_he?
?? ??? ??? ? ??? ?“輸入參數列表” : 規定輸入參數必須要有 類型 參數名 ,
?? ??? ??? ??? ? 參數與參數之間用 ',' 隔開
?? ?類型1 參數名1 , 類型2 參數名2 , ....... ?
void : 表示該函數不帶參數。(void可以省略)
return語句 :
return 返回的意思。return只能用在函數內部。
表示函數結束的意思。
return ; 函數結束,不帶任何返回值。
在函數的返回值類型為void的時,可能需要用到上述語句。 return 表達式 ; 函數結束,并且帶一個返回值,“表達式”的值。
函數的返回值類型,就是return 語句后面的“表達式”的值的類型。
函數的調用過程
函數調用: 調用一個已經實現了的 函數去執行函數中封裝的指令序列。
a: 需要指定是哪個函數/任務 ,指定任務名/函數名
b: 完成該任務/函數 需要有哪些實際上的參數(實際參數)
實際參數(實參): 調用該函數式傳入的參數。
形式參數(形參): 定義或設計該函數時的參數。
參數的傳遞,是將 形參 = 實參的值!!
“實參” : 就是一個表達式
指定實參時,不需要指定實參的類型。
實參需要與形參一一對應(不僅僅實參與形參的個數對應,
并且實參與形參的類型也要相對應)!!!
例:
int main()
{
int a[10];
input_array(a , 10);//調用函數
int s = sum(5 , 6);
printf("s == %d\n", s);
}
函數的調用過程?? ??? ?a、把實參的值 賦值給 相對應的形參
?? ??? ?b、跳轉到函數中去執行函數中的指令序列。
?? ??? ??? ?直到遇到 return語句 或者 函數語句全部執行完畢。
?? ??? ??? ?return 后面的表達式的值,將作為整個函數調用表達式的值。?
?? ??? ??? ?當函數執行完畢,那么此時CPU會回到函數調用處,
?? ??? ??? ?繼續往下面運行。?
函數聲明
就是告訴編譯器 這個“名字(標識符)”是一個函數名,
在后面的某個位置會定義的。
函數聲明:?
?? ?void input_array(int arr[], int n) ?; ? ?//函數頭?
外部的函數聲明:
extern 外部函數的頭部;
本文件中的函數的聲明:
函數頭部分 ;
變量聲明
外部的全局變量的聲明 :
extern 變量的類型 變量;
例子: 假設你想要在1.c中去使用2.c中的那個變量
2.c ? ? ? ? ? ? ? ? ?1.c?
?? ??? ??? ??? ??? ?//對2.c中變量a進行外部聲明?
?? ??? ??? ??? ??? ?extern int a;
int a = 250; ? ? ?? ?printf("2.c => ?a ==%d\n", a);
數組聲明
int a[3][4];
數組的聲明與普通變量的聲明類似!!!
原文鏈接:https://blog.csdn.net/weixin_46836491/article/details/125583123
相關推薦
- 2022-07-09 docker 中進程的信號
- 2022-11-15 Django?使用VScode?創建工程的詳細步驟_python
- 2022-09-09 使用python怎樣產生10個不同的隨機數_python
- 2023-01-15 React?Fiber樹的構建和替換過程講解_React
- 2023-03-15 Native層消息機制深入探究實例解析_Android
- 2022-04-15 python實現購物車功能_python
- 2023-03-22 Python中數值比較的效率_python
- 2022-08-19 WPF使用Geometry繪制幾何圖形_C#教程
- 最近更新
-
- 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同步修改后的遠程分支