C 函式(一) 函式的基礎知識

2021-10-09 03:16:08 字數 2654 閱讀 6305

以前,我有個朋友認為,學習c++,只要把指標,類,結構體等基礎的,再結合自己的聰明才智,就可以結合實際工程的**看懂,然後慢慢開始學會**了。

然而,事實上並不是這樣,因為c++中還有好多細節需要知道,特別是與函式相關的。

第一:函式與陣列的關係和使用;

第二:函式與二維陣列的關係和呼叫,更高維;

第三:函式和字串的關係和呼叫;

第四:函式與結構體的關係和呼叫;

第五:函式與string物件的關係和呼叫;

第六:函式和array物件的關係和呼叫;

第七:函式指標;

關於函式的定義,其實很簡單,就如下格式:

void

fun_name

(paramaterlist)

從上述**可以看出,裡面還有乙個return

這是因為函式還存在兩種情況,即有返回值的函式和無返回值的函式:

無返回值的函式也被稱為void函式,其書寫個數如上述**所示。

無返回值的函式往往是實現一些具體的功能,如列印和顯示已經計算完成的資料數值等。

有返回值的函式會返回乙個具體的結果,例如作為實際工程中某個變數的右值。

如下**所示:

#include

using

namespace std;

intadd

(int

,int);

//函式原型

intmain()

intadd

(int x,

int y)

//書寫乙個簡單的求和函式

首先給出乙個簡單的**,然後根據該**解釋函式原型以及函式原型的語法和功能作用

#include

//首先宣告函式原型,在函式原型中,可以定義函式的變數型別和變數名,也可以之定義變數型別,不定義變數名

void

cheers

(int);

double

cube

(double x)

;int

main()

//寫函式體

void

cheers

(int n)

double

cube

(double x)

原型描述了函式到編譯器的介面,也就是說,他將函式返回值的型別(如果有返回值)以及引數的型別和數量告訴編譯器。例如:

double volume = cube(side);

首先,原型告訴編譯器,cube()有乙個double型別的引數。如果程式沒有提供這樣的引數,原型將讓編譯器能夠捕獲這種錯誤。

齊次,cube()函式完成計算後,將把返回值放置在指定的位置(可能是cpu暫存器,也可能是記憶體中)。

重要的一點是,c++允許將乙個程式放在讀個檔案中並單獨編譯這些檔案。然後再將他們組合起來。在這種情況下,編譯器在變異main()函式時,可能無權訪問函式**。如果函式位於庫中,情況也將如此。

避免使用函式原型的唯一方法是,在首次使用函式之前就定義它,但這並不總是可行的。

在前面也說過,定義函式原型,必須在原型函式頭中定義變數的型別(int double等等),同時也可以提供變數名,當然,不給出變數名也不會錯。

例如上述**的兩個原型

void

cheers

(int);

double

cube

(double x)

;

c++通常是按值傳遞引數,這就意味著將數值引數傳遞給函式,而後後者將被賦值給乙個新的變數。例如:上述**中,包含下面的函式呼叫:

double volume =

cube

(side)

;

其中,side是乙個變數,在前面的執行程式中,其值為5。cube()的函式頭如下:

double

cube

(double x)

;

被呼叫時,該函式將建立乙個新的名為x的double變數,並將其初始化為5。這樣,cube()執行的操作不會影響main()中的資料,因為cube()使用的是side的副本,而不是原來的資料。

在函式中宣告的變數(包括引數)是該函式私有的。在函式被呼叫時,計算機將為這些變數分配記憶體;在函式結束時,計算機將釋放這些變數使用的記憶體。這樣的變數成為區域性變數,因為他們被限制在函式中。

當然,乙個函式不可能只有乙個引數,寫乙個函式,往往會需要同時輸入多個引數。

當然,當乙個函式中存在多個引數的時候,也需要規範化在函式頭中使用多引數的形式。

我們知道,當我們在函式中定義變數時,我們可以在函式中這樣定義變數:

int

main()

然而,如果在函式投中存在多個引數時,如果我們使用這種形式來定義則是錯誤的,,例如:

void

add(

int a,

int b)

上述是正確的定義方法。

如果我們使用下面的方法,則是錯誤的:

void

add(

int a,b)

C 基礎知識 函式

寫在前面 在剛上大學的時候,學習各種各樣的計算機基礎知識,對我而言,剛開的時候我是不理解的,知識太抽象,只是機械的記住了概念和用法,往往忽略了一些細節。當自己實踐增多的時候,各種知識漸漸的清晰起來,所有東西都是有來龍去脈的,原來不理解的東西都豁然開朗起來。這個時候再取回顧原來學習的知識技能,又有一種...

函式基礎知識

1.函式呼叫 注意函式名稱,引數個數,引數資料型別 2.函式定義 def 函式名 引數 函式體return 返回值 函式中也可以直接使用pass,意為什麼也不做,目的是讓程式能夠執行不報錯 python有一點值得注意,返回值可以為多個,例如 d def get weight and height d...

C 基礎知識 轉換函式

1.舉例 分數物件視為doubule型別class fraction operator double const private int m num int m den 2.轉換函式的特點 2.1 沒有函式返回型別 2.2 沒有引數 2.3 必須是成員函式 3.注意事項 3.1 如果定義了全域性過載...