華清遠見25072班C語言學習day11

重點內容:

函數:

定義:

????????返回值類型 函數名(參數列表) { //函數體 }

????????函數的參數列表中可以有多個數據

????????返回值:如果函數沒有返回值可以寫成void 返回值的作用,函數的結果用來返回給主調函數的,如果主調函數處不需要函數的結果,函數可以沒有返回值

????????參數:如果函數實現功能時,需要外部傳遞數據過來,那么函數就需要參數

????????寫在函數定義位置的參數叫做形式參數,沒有實際的意義,只起到占位作用????????

????????函數的定義不能嵌套????????

函數的分類:

????????是否需要自己定義:庫函數、自定義函數

????????是否被調用的角度:主調函數、被調函數

????????是否有返回值和參數的角度:

? ? ? ? ? ? ? ? 1.有參有返回值

? ? ? ? ? ? ? ? 2.有參無返回值

? ? ? ? ? ? ? ? 3.無參無返回值

? ? ? ? ? ? ? ? 4.無參有返回值

函數的調用:

????????函數名(實際參數);

????????實際參數的個數需要和形式參數的個數保持一致

????????函數調用的過程就是實參初始化形參的過程

????????函數定義的代碼不會執行,只有函數被調用時才會執行函數體

????????不同函數中的同名變量,互不相關

函數的返回值:

????????函數的返回值可以理解為函數調用的結果

函數聲明:

????????函數定義在函數調用下方時,需要函數聲明

????????格式: 返回值類型 函數名(參數類型);

????????作用: 告訴編譯器,函數的參數類型和返回值類型,讓編譯器可以找到該函數

數組作為函數參數傳遞:

????????所有出現在函數形參位置長得像數組定義的代碼,實際上都是指針????????

? ? ? ? void fun(int *p,int len) //一維整形數組:形參需要使用同類型的指針變量接收一維整形數組的地址,還需要傳一維整型數組的長度(因為在功能函數中不能求出數組的長度)

? ? ? ? void fun(char *p)//一維字符數組:只需要接收一維字符數組的首地址即可,不需要接收長度

? ? ? ? void?fun(int (*p)[3],int r,int c)//二維數組作為函數參數傳遞時,形參需要使用數組指針接收

指針函數:

全局變量和局部變量:

????????全局變量:不定義在任何括號中的變量,生命周期和作用域是程序的開始到結束

????????局部變量:定義在括號中的變量,生命周期和作用域是括號的開始到結束

如何區分生命周期和作用域:

????????生命周期:內存存在的時候

????????作用域:可以訪問的位置

static的使用:

????????static用于局部變量:延長局部變量的生命周期,編程程序的開始到結束

????????static修飾全局變量:不能在其他文件中訪問該全局變量

????????static修飾函數:不能在其他文件中調用函數

指針函數:

????????本質是一個函數,返回值是指針(一定是一個有返回值的函數)

????????返回值是函數返回到主調函數處的結果

????????總結:指針函數可以返回生命周期更長的變量的地址

動態內存分配:

????????申請堆區內存????????

malloc:

????????void *malloc(size_t size);

????????功能:從堆區申請指定字節數的空間

????????返回值:申請的堆區空間的首地址

????????參數:申請多少個Byte

free:

????????void free(void *ptr);

????????功能:釋放堆區內存

????????返回值:無

????????參數:萬能指針,接收任意類型的地址(要釋放空間的首地址)

內存泄漏:

????????堆區有空間沒有在使用,但是空間所有權沒有還給內存,導致無法從堆區申請空間,這種情況叫內存泄漏

????????如何避免內存泄漏,申請空間之后記得釋放

函數指針:

????????本質是一個指針,指向一個函數

????????int add(int a,int b) { return a+b; } -->int (*p)(int,int) = add;//返回值類型 (*函數指針名)(形參類型);?讓指針指向指定返回值類型和參數類型的函數

回調函數:

????????函數的其中一個參數是函數指針,由函數指針指向的函數來完成實際的功能

遞歸函數:

遞歸的三要素:

????????遞歸出口(沒有就是死遞歸)

????????遞歸邏輯

????????遞歸返回值


作業:

1.趕鴨子問題:一個人趕著鴨子去村莊賣,每經過一個村子賣出一半又一只,經過七個村莊后還剩下兩只鴨子,問出發時共趕了多少只鴨子

程序源碼:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int duck(int day)
{
if(day==7)return 2;
return(duck(day+1)+1)*2;
}
int main(int argc, const char *argv[])
{
printf("%d\n",duck(0));
return 0;
}

2.用遞歸輸出數的二進制

程序源碼:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int transform(int num)
{
if(num>1)
{
transform(num/2);
}
printf("%d",num%2);
}
int main(int argc, const char *argv[])
{
int num;
printf("請輸入需要轉換的數:");
scanf("%d",&num);
printf("after transform:");
transform(num);
putchar(10);
return 0;
}

3.遞歸輸出斐波那契數列

程序源碼:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int Fibonacci(int num)
{
if(num==1||num==2)
{
return 1;
}
return Fibonacci(num-1)+Fibonacci(num-2);
}
int main(int argc, const char *argv[])
{
int num;
printf("請輸入打印包含幾個元素的斐波那契數列:");
scanf("%d",&num);
printf("Fibonacci=");
for(int i=1;i<=num;i++)
{
printf("%d\t",Fibonacci(i));
}
putchar(10);
return 0;
}

4.整理思維導圖

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93748.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93748.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

視覺語言導航(7)——VLN的數據集和評估方法 3.2

這是課上做的筆記&#xff0c;因此很多記得比較急&#xff0c;之后會逐步完善&#xff0c;每節課的邏輯流程寫在大綱部分。成功率(SR)導航誤差(NE)成功加權路徑長度&#xff08;SucceedPLength&#xff09;軌跡長度&#xff08;TL&#xff09;先知成功率&#xff08;OS&#xf…

ElasticSearch不同環境同步索引數據

目的&#xff1a;在生產環境把一個索引的數據同步到測試環境中1、在生產環境導出json數據curl -u "adims_user:xkR%cHwR5I9g" -X GET "http://172.18.251.132:9200/unify_info_mb_sp_aggregatetb_0004/_search?scroll1m" -H Content-Type: applicatio…

咨詢進階——解讀咨詢顧問技能模型

適應人群為咨詢行業從業者、咨詢團隊管理者、想提升咨詢技能的職場人士及咨詢公司培訓人員。主要內容圍繞咨詢顧問技能模型展開,核心包括五大核心能力(解決問題能力,涵蓋洞察力、分析技巧、問題構建等,從識別問題實質到構建新分析方法分層次闡述;管理能力,涉及管理他人與…

2025年- H98-Lc206--51.N皇后(回溯)--Java版

1.題目描述2.思路 二維數組集合 (1&#xff09;N皇后規則 1&#xff09;不能同行&#xff08;同一行不能出現2個皇后&#xff09; 2&#xff09;不能同列&#xff08;同一列不能出現2個皇后&#xff09; 3&#xff09;不能說45度或135度&#xff08;斜對角線不能出現2個皇后&am…

5G + AI + 云:電信技術重塑游戲生態與未來體驗

在數字娛樂蓬勃發展的今天&#xff0c;游戲產業已然成為科技創新的前沿陣地。電信網絡也經歷了一場深刻的蛻變&#xff0c;從最初僅僅是 “內容傳輸管道”&#xff0c;搖身一變成為與游戲深度綁定的技術共生體。5G 不斷刷新著體驗的邊界&#xff0c;AI 徹底顛覆傳統的創作模式&…

【React Hooks】封裝的藝術:如何編寫高質量的 React 自-定義 Hooks

【React Hooks】封裝的藝術&#xff1a;如何編寫高質量的 React 自-定義 Hooks 所屬專欄&#xff1a; 《前端小技巧集合&#xff1a;讓你的代碼更優雅高效》 上一篇&#xff1a; 【React State】告別 useState 濫用&#xff1a;何時應該選擇 useReducer 作者&#xff1a; 碼力…

華為GaussDB的前世今生:國產數據庫崛起之路

在數據庫領域&#xff0c;華為GaussDB已成為一顆耀眼的明星&#xff0c;為企業核心業務數字化轉型提供堅實的數據底座。但這并非一蹴而就&#xff0c;其背后是長達二十余年的技術沉淀、戰略投入與持續創新。本文將深入探尋華為GaussDB的歷史沿革與核心技術細節&#xff0c;展現…

數據結構初階(16)排序算法——歸并排序

2.4 歸并排序 歸并排序&#xff08;Merge Sort&#xff09;是基于分治思想的經典排序算法。核心邏輯&#xff1a; 分而治之——把復雜排序問題拆分成簡單子問題解決&#xff0c;再合并子問題的結果。聯系鏈表的合并&#xff1a;兩個有序鏈表l1、l2創建新鏈表l3&#xff08;帶頭…

MATLAB實現匈牙利算法求解二分圖最大匹配

MATLAB實現匈牙利算法求解二分圖最大匹配 匈牙利算法&#xff08;也稱為Kuhn-Munkres算法&#xff09;是解決二分圖最大匹配問題的經典算法。 代碼 function [matching, max_match] hungarian_algorithm(adjMatrix)% HUNGARIAN_ALGORITHM 實現匈牙利算法求解二分圖最大匹配% 輸…

自定義table

更好<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>數據表格</title><style>* {margin: 0;padding: 0;box-sizing: border-box;font-size: 14px;}html,body {width: 100%;height: 100%…

面向R語言用戶的Highcharts

如果您喜歡使用 R 進行數據科學創建交互式數據可視化&#xff0c;那么請你收藏。今天&#xff0c;我們將使用折線圖、柱狀圖和散點圖來可視化資產回報。對于我們的數據&#xff0c;我們將使用以下 5 只 ETF 的 5 年月回報率。 SPY (S&P500 fund)EFA (a non-US equities fun…

【測試工具】OnDo SIP Server--輕松搭建一個語音通話服務器

前言 Ondo SIP Server 是一款基于 SIP(Session Initiation Protocol)協議的服務器軟件&#xff0c;主要用于實現 VoIP(Voice over IP)通信&#xff0c;支持語音通話、視頻會議等多媒體會話管理&#xff0c;非常適合學習和測試VoIP的基本功能。本文介紹Ondo SIP Server的安裝、…

瘋狂星期四文案網第42天運營日記

網站運營第42天&#xff0c;點擊觀站&#xff1a; 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 今日訪問量 今日搜索引擎收錄情況 網站優化點 優化一些發現的seo錯誤 增加顏文字欄目 增加了一些tag

使用空模型實例調用輔助函數,確定在量化過程中哪些層會被跳過(43)

在Facebook的OPT-350M中,模型的頭部(lm_head)與解碼器的嵌入標記層(decoder.embed_tokens)共享其權重。 print(model.model.decoder.embed_tokens) print(model.lm_head)輸出結果 Embedding(50272, 512

從0-1使用Fastmcp開發一個MCP服務,并部署到阿里云百煉 -持續更新中

目的&#xff1a; 在本地使用fastmcp開發一個mcp,然后注冊到阿里云的百煉里面。實現在百煉里面創建智能體的時候直接引用自己開發的MCP 已完成&#xff1a;本地環境安裝 待完成&#xff1a; 1.根據需求實現一個MCP中可以調用某應用的多個API即 mcp.tool()、mcp.prompt()、接入大…

設計模式之匯總

設計模式 零、設計原則 0.1 單一職責 0.2 接口隔離 0.3 開閉原則 0.4 依賴倒置0.5 迪米特法則&#xff0c;最小知道原則用戶關機 只和朋友通信 朋友條件&#xff1a; 1&#xff09;當前對象本身&#xff08;this&#xff09; 2&#xff09;以參量形式傳入到當前對象方法中的對象…

第6章 Decoder與Encoder核心組件

前言 Netty從底層Java通道讀取ByteBuf二進制數據&#xff0c;傳入Netty通道的流水線&#xff0c;隨后開始入站處理。在入站處理過程中&#xff0c;需要將ByteBuf二進制類型解碼成Java POJO對象。這個解碼過程可以通過Netty的Decoder&#xff08;解碼器&#xff09;去完成。 在…

[已解決]當啟動 Spring Boot 應用時出現 Using generated security password xxx提示

當啟動 Spring Boot 應用時出現 Using generated security password xxx提示當啟動 Spring Boot 應用時出現 Using generated security password xxx提示&#xff0c;這是 Spring Security 自動配置的默認行為&#xff0c;通常發生在你??未自定義安全配置??但引入了 Spring…

自動分析需求,PRD 生成只需 SOLO 一步!

資料來源&#xff1a;火山引擎-開發者社區 寫不清需求&#xff1f;PRD 難產&#xff1f;開發總跑偏&#xff1f;這些痛點&#xff0c;SOLO 來解決。 TRAE SOLO 是行業首個 Context Engineer。它不止協助編碼&#xff0c;更能基于精準上下文理解和工具調用&#xff0c;從構思、…

物聯網軟件開發過程中,數據流圖(DFD),用例圖,類圖,活動圖,序列圖,狀態圖,實體關系圖(ERD),BPMN(業務流程建模)詳解分析

概述軟件開發過程中&#xff0c;特別是在物聯網&#xff08;IoT&#xff09;場景中&#xff0c;數據流圖&#xff08;DFD&#xff09;、UML圖&#xff08;包括用例圖、類圖、活動圖、序列圖、狀態圖&#xff09;、實體關系圖&#xff08;ERD&#xff09;和業務流程建模&#xf…