C語言基礎知識之三

2021-07-31 13:53:18 字數 2359 閱讀 9848

1.時間複雜度 t(n)=o(f(n))

只保留最高項、不要係數

(1o(f(n))=o(1)

(2)for 1層迴圈 o(f(n))=o(n)

(3)for 2層迴圈,o(f(n))=o(n^2)

(4)for 3層迴圈,o(f(n))=o(n^3)

(5)

for(int i=2;i

<=n;i++)

for(int j=2;j

<=i-1;j++)

共2*(0+0+1+2+…+n-2)次,即o(f(n))=o(n^2)

(6)for(int i=1;i<=n;i*=2;)

共log(n)2;即o(f(n))=o(log(n)2)

(7)for(int i=1;i<=sqrt(n);i++)o(f(n))=o(n^(1/2))

(8)遞迴中return fun(n/2)+n;即o(f(n))=o(log(n)2) ,與第(6)類似

2.空間複雜度

實現演算法所需要的額外的輔助空間

從變數的作用域,變數分為區域性變數和全域性變數

從變數的生存期,變數的儲存方式分為靜態儲存方式和動態儲存方式

1.區域性變數的儲存類別

區域性變數:在函式內部定義的變數

主函式中定義的變數是區域性變數,形參也是區域性變數

作用域:只在本函式內部有效

(1)自動變數(auto變數)

不專門宣告為static(靜態)儲存型別,都是動態的分配儲存空間,它的預設值隨機,資料儲存在動態儲存區中,函式呼叫結束時就自動釋放這些儲存空間

(2)靜態區域性變數(static區域性變數)

有關鍵字static,它的預設值為0,在靜態儲存區內分配儲存單元,區域性變數的值在函式用結束後繼續保留原值,即其占用的儲存單元不釋放。

2.全域性變數的儲存類別

全域性變數:在函式外定義,不安全

作用域:整個工程內都可以使用,從變數的定義處開始,到本程式檔案的結尾

記憶體區域:靜態變數區

生命週期:執行時被建立,退出時被銷毀

預設值:0

(1)外部變數

關鍵字extern可以對該變數做「外部變數宣告」,表示把該變數的作用域擴充套件到此位置,可以擴充套件到乙個檔案,也可以擴充套件到其他檔案。有了此宣告,就可以從「宣告」處起,合法的使用該外部變數。如:extern int a,b,c;

(2)靜態外部變數(用static宣告)

將外部變數的作用域限制在本檔案中

用static宣告乙個變數的作用是:對全域性變數用static宣告,把它分配在靜態儲存區,該變數在整個程式執行期間不釋放,其所分配的空間始終存在; 對全域性變數用static宣告,則該變數的作用域只限於本檔案模組。

1.一維陣列

int arr[10]=;
如記憶體為arr分配10個格仔

arr 表示陣列首元素位址,如陣列arr首位址為0x00d2fef8, 型別為int *

arr+1 表示格仔號為1的元素的位址,如0x00d2fefc,與第0個格仔位址差值為4,型別為int *

arr[0] 表示格仔號為0的元素的內容,此時為0, 型別為int

arr[1] 表示格仔號為1的元素的內容,此時為1, 型別為int

arr[0]+1 表示格仔號為1的元素的內容,即arr[1],此時為1, 型別為int

2,二維陣列

int brr[3][4]=;

如分配3*4的記憶體空間

brr 表示第0行首位址為0x010ffb34 , 型別為int(*p)[4],即陣列指標

brr+1 表示第1行首位址為0x010ffb44, 型別為int(*p)[4]

brr[0] 表示第0行第0列元素位址為0x010ffb34, 型別為int *

brr[0]+1 表示第0行第1列元素位址為0x010ffb38, 型別為int *

brr[1] 表示第1 行首位址為0x010ffb44, 型別為 int*

brr[0][0] 表示第0行第0列元素內容為0, 型別int

brr[0][0]+1 表示第0行第1列元素內容為1, 型別int

brr[1][0]+1 表示第1行第1列元素內容為5, 型別為int

C語言基礎知識學習(三)

c語言基礎知識學習之程式結構 一 程式結構 程式結構 可以分為 順序 分支和迴圈 1分支結構 if else 1 if 的使用形式 如果條件為真執行語句塊1,否則跳過。if 常量 變數 表示式 2 if else 形式如果條件為真執行語句塊1,為假執行語句塊2。if 常量 變數 表示式 else 3...

C語言基礎知識學習(三)

一 程式結構 程式結構可以分為 順序 分支和迴圈 1分支結構 if else 1 if 的使用形式 如果條件為真執行語句塊1,否則跳過。if 常量 變數 表示式 2 if else形式 如果條件為真執行語句塊1,為假執行語句塊2。if 常量 變數 表示式 else 3 if else 巢狀形式 if...

C語言基礎知識總結(三)

1 聯合體 共用體 不同型別的變數共同占用一段記憶體 相互覆蓋 聯合變數任何時刻只有乙個成員存在,節省記憶體 聯合體變數的大小 最大的成員所佔的位元組數 union myvalue void main typedef union jvalue jvalue 2 列舉 限定值,保證取值的安全性 enu...