Essential c 2 2呼叫函式

2021-07-23 15:53:53 字數 1388 閱讀 4080

本節講了乙個氣泡排序,主要討論的是傳值,傳址。這一點我基本已經懂了,所以就寫乙個氣泡排序的正確程式。

#include

#include

using

namespace

std;

void display(vector

vec)

void bubble_sort(vector

&vec)

int main()

; vector

vec(ia,ia+8);

cout

<<"vector before sort:";

display(vec);

bubble_sort(vec);

cout

<<"vector after sort:";

display(vec);

}

當我們呼叫乙個函式時,會在記憶體中建立一塊特殊區域,稱為「程式堆疊」這塊特殊區域提供了每個函式引數的儲存空間。提供函式所定義的每個物件的記憶體空間。。。我們稱為區域性物件,一旦函式完成,這塊記憶體就會被釋放掉。

將引數設定為reference的理由:首先,能夠對傳入的物件進行修改,其次,降低複製大型物件的額外負擔。

也可以將vector以pointer形式傳遞。這和一reference傳遞的效果相同:傳遞物件的位址,而不是副本。但是用法不同,重新寫display()

void display(const

vector

*vec)

for(int ix=0;ixsize();ix++)

cout

<<(*vec)[ix]<<' ';

cout

《作用域及範圍:

函式內定義的物件,只存在於函式執行期間。如果將這些所謂的區域性物件的位址返回,會導致執行錯誤。

動態記憶體管理:

不論是區域性還是全域性,都是由系統自動管理。第三種儲存期形式稱為dynamic extent(動態範圍).其記憶體由程式的空閒空間分配而來,有時也稱為堆記憶體heap memory。這種記憶體由程式設計師自行管理,其分配通過new來完成。釋放通過delete表示式完成。

int *pi;

pi= new

int;

pi=new

int(1024);//指定初值

int *pia=new

int[24];//pia會被初始化為陣列第乙個元素的位址,c++

沒有提供任何語法讓我們得以從heap分配陣列的同時為其元素設定初值。

delete pi;'

delete pia;//無需檢查pia是否為0,編譯器會幫我們檢查

//不用delete的話heap分配的物件永遠不會被釋放稱為memory leak。

Python爬蟲day2 2 python函式詳解

1.認識python函式 函式的本質就是功能的封裝。使用函式可以大大提高程式設計的效率與程式的可讀性 2.區域性變數與全域性變數變數是有生效範圍的,這個生效範圍我們稱為作用域。作用域從變數出現開始到程式的最末的變數叫做全域性變數,作用域只在區域性的變數叫做區域性變數。3.函式引數使用詳解 函式的定義...

Struts2 2 動態呼叫方法

先來看看struts配置檔案 hello.jsp add input.jsp success.jsp update input.jsp success.jsp success.jsp 這會我們加入了namespace命名空間,所以在請求位址的時候不要忘記寫上這個,然後可以看出已經沒有了method方...

Qt 呼叫CAN開發包時,顯示無法找到呼叫函式

說先,對下錯誤,免得看半天發現說的不是乙個東西 c qt qt5.5.0 myprojects qtdemo20180813 qtdemo20180813 build test desktop qt 5 5 0 mingw 32bit debug test test.cpp 230 undefine...