久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > C語言知識點(函數(shù)篇)

        C語言知識點(函數(shù)篇)

        來源:千鋒教育
        發(fā)布人:qyf
        時間: 2022-10-26 15:21:08 1666768868

        C語言知識點(函數(shù)篇)

          函數(shù)

          1、如何理解庫函數(shù)

          庫是已經(jīng)寫好的、成熟的、可復(fù)用的代碼。每個程序都需要依賴很多底層庫,不可能每個人的代碼從零開始編寫代碼,因此庫的存在具有非常重要的意義。在我們的開發(fā)的應(yīng)用中經(jīng)常有一些公共代碼是需要反復(fù)使用的,就把這些代碼編譯為庫文件。庫可以簡單看成一組目標文件的集合,將這些目標文件經(jīng)過壓縮打包之后形成的一個文件。像在Windows這樣的平臺上,最常用的c語言庫是由集成按開發(fā)環(huán)境所附帶的運行庫,這些庫一般由編譯廠商提供

          2、如何理解指針作為函數(shù)參數(shù)的輸入和輸出特性

          輸入特性:主調(diào)函數(shù)分配空間 背調(diào)函數(shù)使用該空間

          輸出特性:被調(diào)用分配空間 主調(diào)函數(shù)使用該空間

          3、函數(shù)名的意義

          在c語言中 函數(shù)名代表的是函數(shù)的入口地址

          4、函數(shù)的形參和實參的區(qū)別

          C++

          int data1=0;

          int data2=0;

          int my_add(int x, int y)

          {

          return x+y;

          }

          int main()

          {

          my_add(data1,data2);

          }

          形參:在函數(shù)定義時候定義形參(例如:x,y),一般由形參類型和形參名組成。在定義函數(shù)是不會為形參開辟空間,只有在函數(shù)調(diào)用時系統(tǒng)才會為形參開辟空間

          實參:在函數(shù)調(diào)用時傳遞給函數(shù)的實際參數(shù)(例如:data1,data2),他在函數(shù)調(diào)用前就存在的

          5、函數(shù)的作用

          將為同一功能服務(wù)的代碼,封裝在一起,通過函數(shù)名直接調(diào)用,提高代碼的重用

          6、函數(shù)的定義與函數(shù)的聲明的區(qū)別

          函數(shù)定義:是指對函數(shù)功能的確立,包括指定函數(shù)名、函數(shù)類型、形參及其類型、函數(shù)體等,它是一個完整的、獨立的函數(shù)單位。

          函數(shù)的聲明:是把函數(shù)的名字、函數(shù)類型以及形參的個數(shù)、類型和順序(注意,不包括函數(shù)體)通知編譯系統(tǒng),以便在對包含函數(shù)調(diào)用的語句進行編譯時,據(jù)此對其進行對照檢查(例如函數(shù)名是否正確,實參與形參的類型和個數(shù)是否一致)

          7、從定義的角度為函數(shù)分類

          庫函數(shù)(c語言庫)、自定義函數(shù)、系統(tǒng)調(diào)用(內(nèi)核提供給用戶的函數(shù)接口)

          8、從有無參數(shù)的角度對函數(shù)分類

          無參的函數(shù):不能將函數(shù)外部的數(shù)據(jù) 傳遞 給函數(shù)內(nèi)部

          有參的函數(shù):通過參數(shù) 將函數(shù)外部的數(shù)據(jù) 傳遞到函數(shù)內(nèi)部

          (參數(shù):函數(shù)外部數(shù)據(jù) 到 函數(shù)內(nèi)部的 橋梁)

          9、普通變量作為函數(shù)的參數(shù)特點

          函數(shù)內(nèi)部可以借助函數(shù)的參數(shù)使用外部變量的值,但是函數(shù)內(nèi)部不能通過形參間接修改外部變量的值(單向傳遞中的值傳遞)

          10、一維數(shù)組作為函數(shù)的參數(shù)的特點

          數(shù)組作為函數(shù)的參數(shù),會被優(yōu)化成數(shù)組元素指針變量,在調(diào)用函數(shù)的時候?qū)崊⒅恍枰獋鬟f數(shù)組的首元素地址就可以操作數(shù)組的所有元素

          11、在32位平臺Void func(int arr[5]){}則sizeof(arr)的結(jié)果

          4字節(jié)

          12、二維數(shù)組作為函數(shù)的特點

          二維數(shù)組作為函數(shù)的參數(shù)會被優(yōu)化成數(shù)組指針,函數(shù)內(nèi)部可以借助該數(shù)組指針操作二維數(shù)組的所有元素。在操作數(shù)組元素上該數(shù)組指針等價于函數(shù)外部的二維數(shù)組名

          字符串

          宏函數(shù)以及作用

          在項目中,經(jīng)常把一些短小而又頻繁使用的函數(shù)寫成宏函數(shù),這是由于宏函數(shù)沒有普通函數(shù)參數(shù)壓棧、跳轉(zhuǎn)、返回等的開銷,可以調(diào)高程序的效率。宏通過使用參數(shù),可以創(chuàng)建外形和作用都與函數(shù)類似地類函數(shù)宏(function-like macro). 宏的參數(shù)也用圓括號括起來,來保證宏函數(shù)的完整性。

          strlen和sizeof的區(qū)別

          strlen是測量字符串長度(不包含'\0'),sizeof是測量類型大小(包含‘\0’)

          字符串的結(jié)束標記

          一般將'\0'作為字符串的結(jié)束標記,以str開頭的字符串操作函數(shù)默認遇到'\0'結(jié)束調(diào)用

          字符串的常用操作

          字符串拷貝(strcpy),比較(strcmp)、拼接(strcat)、查找(strchr,strstr)、 長度(strlen)、獲取子串(strtok)

          在使用realloc給已分配的堆區(qū)空間追加空間時需要注意啥

          realloc給定的空間大小必須是新空間+舊空間的大小

          記得用指針變量保存realloc的返回值

          宏函數(shù)和普通函數(shù)的區(qū)別

          普通函數(shù)只有一份,在調(diào)用的時候為函數(shù)內(nèi)部數(shù)據(jù)分配空間,每次調(diào)用函數(shù)是獨立的。函數(shù)在調(diào)用的時候存在出入棧的開銷。函數(shù)的形參有類型 能保證參數(shù)的整型

          宏函數(shù):本質(zhì)是宏 而不是函數(shù),他是在預(yù)處理階段展開,多次調(diào)用,展開多次,沒有函數(shù)調(diào)用時的"出入棧"開銷。宏函數(shù)的參數(shù)沒有參數(shù)不能保證參數(shù)的完整性

          條件編譯的作用

          條件編譯的作用:在編譯階段有選擇的編譯我們的源碼,達到同一個源碼裁剪出不同的功能

          以str開頭的字符串操作函數(shù)的特點

          字符串的操作函數(shù)基本都是傳遞字符串首元素地址

          字符串的操作函數(shù)基本都是遇到'\0'結(jié)束操作

          結(jié)構(gòu)體共用體枚舉

          描述結(jié)構(gòu)體對齊規(guī)則

          1. 數(shù)組成員對齊規(guī)則。第一個數(shù)組成員應(yīng)該放在offset為0的地方,以后每個數(shù)組成員應(yīng)該放在offset為min(當(dāng)前成員的大小,#pargama pack(n))整數(shù)倍的地方開始(比如int在32位機器為4字節(jié),#pargama pack(2),那么從2的倍數(shù)地方開始存儲)。

          2. 結(jié)構(gòu)體總的大小,也就是sizeof的結(jié)果,必須是min(結(jié)構(gòu)體內(nèi)部最大成員,#pargama pack(n))的整數(shù)倍,不足要補齊。

          3. 結(jié)構(gòu)體做為成員的對齊規(guī)則。如果一個結(jié)構(gòu)體B里嵌套另一個結(jié)構(gòu)體A,還是以最大成員類型的大小對齊,但是結(jié)構(gòu)體A的起點為A內(nèi)部最大成員的整數(shù)倍的地方。(struct B里存有struct A,A里有char,int,double等成員,那A應(yīng)該從8的整數(shù)倍開始存儲。),結(jié)構(gòu)體A中的成員的對齊規(guī)則仍滿足原則1、原則2。

          如何理解結(jié)構(gòu)體的淺拷貝與深拷貝

          當(dāng)結(jié)構(gòu)體中有指針成員的時候容易出現(xiàn)淺拷貝與深拷貝的問題。

          淺拷貝就是,兩個結(jié)構(gòu)體變量的指針成員指向同一塊堆區(qū)空間,在各個結(jié)構(gòu)體變量釋放的時候會出現(xiàn)多次釋放同一段堆區(qū)空間

          深拷貝就是,讓兩個結(jié)構(gòu)體變量的指針成員分別指向不同的堆區(qū)空間,只是空間內(nèi)容拷貝一份,這樣在各個結(jié)構(gòu)體變量釋放的時候就不會出現(xiàn)多次釋放同一段堆區(qū)空間的問題

          描述枚舉

          關(guān)鍵字enum,將枚舉變量將要賦值的值 一一用符號常量(枚舉值)列舉出來。枚舉變量盡量賦值為給定的符號常量(枚舉值)

          描述共有體

          以關(guān)鍵字union修飾,共有體又叫聯(lián)合體,共有體中的成員共享同一塊內(nèi)存空間。

          內(nèi)存空間總大小由共用體中最大的成員類型決定,每個成員能夠操作的空間大小是由成員自身類型大小決定

          描述結(jié)構(gòu)體

          以關(guān)鍵字struct修飾,結(jié)構(gòu)體中的成員擁有各自獨立的空間,按照(結(jié)構(gòu)體對齊規(guī)則)存儲在內(nèi)存中

          結(jié)構(gòu)體中的成員類型可以不同

          結(jié)構(gòu)體與共用體的區(qū)別

          結(jié)構(gòu)體中的成員擁有獨立的空間,共用體的成員共享同一塊空間,但是每個共用體成員能訪問共用區(qū)的空間大小是由成員自身的類型決定

          結(jié)構(gòu)體變量初始化時需要注意啥

          結(jié)構(gòu)體變量的初始化 必須遵循結(jié)構(gòu)體成員的順序以及成員的自身類型

          談?wù)勀銓Y(jié)構(gòu)體數(shù)組的理解

          結(jié)構(gòu)體數(shù)組:本質(zhì)是數(shù)組,數(shù)組的每個元素為結(jié)構(gòu)體變量。

          談?wù)勀銓Y(jié)構(gòu)體位域的理解

          在結(jié)構(gòu)體中,以位為單位的成員,咱們稱之為位段(位域)

          不能對位域取地址

          對位域賦值 不要超過 位域本身位的寬度

          談?wù)勀銓︽湵淼睦斫?/strong>

          鏈表是由一個個節(jié)點組成,節(jié)點沒有名字,每個節(jié)點從堆區(qū)動態(tài)申請,節(jié)點間物理上是非連續(xù)的,但是每個節(jié)點通過指針域 保存下一個節(jié)點的位置 達到邏輯上連續(xù)

          談?wù)剶?shù)組和鏈表的不同點

          數(shù)組通過下標能夠快速遍歷數(shù)組的每個元素(訪問效率高),但是當(dāng)數(shù)組插入或刪除數(shù)據(jù)時需要移動大量的數(shù)據(jù)(插入刪除效率低)

          鏈表通過指針域逐個節(jié)點的訪問數(shù)據(jù)(訪問效率低),但是當(dāng)鏈表插入或刪除節(jié)點不需要移動節(jié)點(插入刪除效率高)

          文件操作

          文件緩沖區(qū)刷新方式有幾種

          行刷新、滿刷新、強制刷新、關(guān)閉刷新

          文件的分類

          文件分為二進制和文本文件

          二進制文件基于值編碼,需要根據(jù)具體的應(yīng)用才能知道某個值具體的含義

          文本文件基于字符編碼,一個字節(jié)一個意思,可以通過記事本打開

          二進制文件和文本文件的區(qū)別

          文本文件:

          基于字符編碼,常見編碼有 ASCII、UNICODE 等 ,一般可以使用文本編輯器直接打開 例如:數(shù) 5678 的以 ASCII 存儲形式為: ASCII 碼:00110101 00110110 00110111 00111000

          二進制文件:

          基于值編碼,把內(nèi)存中的數(shù)據(jù)原樣輸出到磁盤上,一般需要自己判斷或使用特定軟件分析數(shù)據(jù)格式例如:數(shù) 5678 的存儲形式為: 二進制碼:00010110 00101110

          c語言中fopen打開文件的模式(mode)有哪些

          文件的打開方式mode:r w a + t b

          r:只讀的方式打開 w:只寫的方式打開 a:追加的方式打開 +:可讀可寫方式打開

          t:以文本文件方式打開 (默認是省略)

          b:以二進制方式打開(必須顯示說明)

          對FILE*文件指針讀寫的API

          Fgetc 和fputc 一次讀寫一個字符

          fgets和fputs 一次讀寫一個字符串

          fread和fwrite按快讀寫文件

          fscanf和sprintf格式化讀寫文件

          文件的隨機讀寫API有哪些

          rewind復(fù)位文件流指針

          ftell返回文件流指針 距離文件首部的 字節(jié)數(shù)

          fseek文件流指針定位

        tags:
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        大數(shù)據(jù)測試工程師需要具備哪些技能?

        一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

        2023-10-14 23:43:03
        為什么SpringBoot的 jar 可以直接運行?

        一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

        2023-10-14 23:01:49
        站群服務(wù)器是什么?

        站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

        2023-10-14 22:46:12
        自編碼器是什么?

        一、自編碼器原理自編碼器的設(shè)計靈感源于神經(jīng)科學(xué)中關(guān)于感知系統(tǒng)的認知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

        2023-10-14 22:41:10
        什么是云網(wǎng)融合?

        一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實現(xiàn)資源的共享、業(yè)務(wù)的協(xié)同,將網(wǎng)絡(luò)與云端服務(wù)深度融合,提供更靈活、高效、安全的...詳情>>

        2023-10-14 22:31:47
        紫云| 桑植县| 延安市| 阿拉善盟| 平顶山市| 海丰县| 宣化县| 潜山县| 伊春市| 扎赉特旗| 法库县| 建宁县| 佛学| 都匀市| 玉林市| 武鸣县| 漠河县| 陇川县| 安图县| 马龙县| 沽源县| 城口县| 晋城| 鹤岗市| 镇安县| 张家界市| 洛浦县| 龙井市| 海口市| 阿尔山市| 重庆市| 婺源县| 乌鲁木齐县| 绥宁县| 科尔| 黔江区| 尚志市| 四平市| 平山县| 迁西县| 潼关县|