文/蔡翔宇
目前,常見的程序語言相對較多,但是大多數(shù)程序都是由C 語言編寫而成,該種算法主要是通過函數(shù)的方法來實(shí)現(xiàn)目標(biāo)設(shè)計(jì)。一般情況下,大多數(shù)的C 語言程序都是由較多的函數(shù)構(gòu)建而成,由此可見,在進(jìn)行C 語言程序編寫的過程中,函數(shù)的應(yīng)用十分重要。但是,對于需要C 語言的新手而言,在進(jìn)行函數(shù)編寫的過程中,經(jīng)常會出現(xiàn)無從下手的問題,這給程序編寫人員帶來了極大的困擾。事實(shí)上,無論目標(biāo)程序是何種的復(fù)雜,只要將實(shí)現(xiàn)目標(biāo)的若干個(gè)小函數(shù)放置于主函數(shù)中即可,但是由于對函數(shù)編寫方法認(rèn)識不清,進(jìn)而使得程序編寫人員的編寫效率嚴(yán)重下降。針對此問題,本次研究主要從函數(shù)的基本結(jié)構(gòu)和設(shè)計(jì)過程出發(fā),對C 語言中常見的無返回值函數(shù)、單返回值函數(shù)以及多返回值函數(shù)的編寫方法進(jìn)行研究,為C 語言的進(jìn)一步推廣和使用奠定基礎(chǔ)。
在C語言中,其函數(shù)的結(jié)構(gòu)相對較為簡單,主要由函數(shù)的函數(shù)頭以及函數(shù)體構(gòu)建而成。一般情況下,在應(yīng)用C 語言時(shí),編寫的第一行代碼即為函數(shù)的函數(shù)頭,第一行中花括號中的內(nèi)容即為函數(shù)體。同時(shí),在進(jìn)行語言設(shè)計(jì)的過程中,也需要對函數(shù)的基本類型進(jìn)行定義,所謂的函數(shù)類型主要指的是定義的函數(shù)返回?cái)?shù)值的類型,如果定義的函數(shù)并沒有返回值,該種函數(shù)就可以稱之為無返回值函數(shù),該種函數(shù)的類型可以定義為“void”。每個(gè)函數(shù)都有自己的函數(shù)名,該函數(shù)名主要是由設(shè)計(jì)人員自己定義,一般情況下,函數(shù)名只要做到見名知意即可。函數(shù)名的后方也存在一個(gè)小括號,該括號的內(nèi)容主要是形式參數(shù),每一個(gè)形式參數(shù)都有屬于自己的函數(shù)類型,因此,需要對這些形式參數(shù)分別進(jìn)行定義。對于函數(shù)體而言,其與主函數(shù)大體類型,都是由實(shí)現(xiàn)目標(biāo)的基本算法所構(gòu)成,根據(jù)設(shè)計(jì)目標(biāo),分別使用順序、選擇、循環(huán)等算法即可實(shí)現(xiàn)函數(shù)體的設(shè)計(jì)。通過對C語言中的函數(shù)結(jié)構(gòu)進(jìn)行深入分析可以發(fā)現(xiàn),只要對函數(shù)結(jié)構(gòu)中的函數(shù)頭進(jìn)行明確的設(shè)計(jì),就可以降低整個(gè)函數(shù)的設(shè)計(jì)難度。
在C 語言中進(jìn)行函數(shù)設(shè)計(jì)時(shí),只需要進(jìn)行兩步的設(shè)計(jì)工作,即可實(shí)現(xiàn)目標(biāo)功能。首先,需要對函數(shù)頭進(jìn)行明確的設(shè)計(jì),必須明確設(shè)計(jì)函數(shù)中哪些參數(shù)屬于已知的,也需要明確這些已知量的數(shù)據(jù)類型,進(jìn)而將這些變量作為函數(shù)頭中的形參,同時(shí),也必須明確函數(shù)中哪些量是未知的,并確定這些未知量的數(shù)據(jù)類型;其次,根據(jù)目標(biāo)需求對函數(shù)體進(jìn)行詳細(xì)的編寫即可。
無返回值函數(shù)是C 語言中最常見的一種函數(shù)類型,該種函數(shù)的主要功能是調(diào)用其它類型的函數(shù),一般情況下,可以將該種函數(shù)定義為“void”,同時(shí),在應(yīng)用該種函數(shù)的過程中,并不需要在函數(shù)體中編寫“return”,該種函數(shù)的輸出具有三角形結(jié)構(gòu),在使用該種函數(shù)的過程中,需要明確三角形結(jié)構(gòu)中的行數(shù),該行數(shù)也屬于函數(shù)的已知量,其數(shù)據(jù)類型屬于整型,同時(shí),該行數(shù)也屬于函數(shù)結(jié)構(gòu)中的形參。
對于C 語言而言,其函數(shù)的類型與函數(shù)返回值的類型相同,對于單返回值函數(shù)而言,在應(yīng)用的過程中需要使用“return”語句將得到的目標(biāo)數(shù)值返回到主函數(shù)中,一般情況下,應(yīng)用“return”語句只能實(shí)現(xiàn)單數(shù)值的返回。例如,使用單返回函數(shù)編寫下式中ex的近似值時(shí),需要首先指導(dǎo)該函數(shù)中x 的具體數(shù)值,才能進(jìn)行進(jìn)一步的計(jì)算,因此,x 就屬于一個(gè)已知量,計(jì)算結(jié)果之后得到的數(shù)值有很大可能不是整數(shù),而是無限不循環(huán)小數(shù),因此,計(jì)算結(jié)果的數(shù)據(jù)類型為浮點(diǎn)類型,該函數(shù)也就屬于浮點(diǎn)類型的函數(shù),同時(shí),x 的數(shù)值也有可能不是整數(shù),有很大可能是小數(shù),因此,可以說該函數(shù)的形參也是浮點(diǎn)類型。
與無返回值的函數(shù)和單返回值的函數(shù)相比,多返回值函數(shù)更為復(fù)雜,由于在應(yīng)用“return”語句的過程中,每次只能返回一個(gè)數(shù)據(jù)數(shù)值,而多返回值函數(shù)中的返回值相對較多,為了實(shí)現(xiàn)該功能,目前常見的方法主要有兩種,首先可以設(shè)置多個(gè)指針變量,通過使用間接訪問的方式實(shí)現(xiàn)數(shù)據(jù)的返回;其次,可以在函數(shù)中設(shè)置一個(gè)指針變量,利用數(shù)組的方式實(shí)現(xiàn)多數(shù)據(jù)的返回。
2.3.1 通過多個(gè)指針變量返回多值
在使用該種方法時(shí),需要對被調(diào)用的函數(shù)進(jìn)行聲明,具體的語句為:void fun(形參,類型1,類型2……類型n),這種方法就可以在主函數(shù)中定義多個(gè)變量,然后返回變量的數(shù)值,該函數(shù)結(jié)構(gòu)中的指針指向的是函數(shù)中的未知變量,同時(shí),在應(yīng)用該種方法的過程中可以通過間接訪問的方法對函數(shù)中的變量值進(jìn)行修改。通過對該種方法進(jìn)行分析可以發(fā)現(xiàn),本方法中的已知量和未知量都是函數(shù)的形參,但是需要在應(yīng)用該方法時(shí)對指針的類型進(jìn)行定義。由于在返回?cái)?shù)值的過程中并不需要使用“return”語句,因此,可以將該種函數(shù)的類型定義為“void”。
2.3.2 通過一個(gè)指針變量返回多值
在使用該種方法時(shí),也需要對被調(diào)用的函數(shù)進(jìn)行聲明,具體的語句為:void fun(形參,類型n),該種方法主要是在主函數(shù)中設(shè)定一個(gè)數(shù)組,數(shù)組中包含有多種數(shù)據(jù)的返回值,只需要在函數(shù)中定義一個(gè)指針,并將其指向該數(shù)組,即可實(shí)現(xiàn)數(shù)組內(nèi)相關(guān)數(shù)據(jù)的返回,同時(shí),在修改函數(shù)的過程中,只需要對數(shù)組內(nèi)的元素進(jìn)行修改即可,但是,在應(yīng)用該方法的過程中,數(shù)組中的數(shù)據(jù)并不保持類型一致。
通過上文分析可以發(fā)現(xiàn),C 語言是最常見、最常用的一種編程語言,在應(yīng)用該種語言的過程中,函數(shù)的定義十分重要,函數(shù)定義完成,目標(biāo)功能的實(shí)現(xiàn)就可以事半功倍。其中,常見的函數(shù)可以分為三種類型,分別是無返回值函數(shù)、單返回值函數(shù)以及多返回值函數(shù),三種類型的函數(shù)編寫方法存在一定的差別,在使用的過程中需要準(zhǔn)確的把握每種函數(shù)類型的編寫方法。