《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
3.1 構建組件
類型允許我們指定如何利用特定位的各種操作,函數允許我們指定在數據上所進行的操作。
利用C結構(structure)類型把各種不同類型的信息集成在一起,并利用指針(pointer)間接引用這些信息。
在C語言中,程序都是由幾種基本數據類型構建的:
· 整數(ints)
· 浮點數(floats)
· 字符(chars)
定義3.1 數據類型是值的集合和在這些值上的操作集。
操作關聯類型,反之不成立。當我們執行一個操作時,我們必須確保操作數和結果有正確類型。忽略這一點是程序設計的常見錯誤。在某些情況下,C語言程序可以進行隱式的類型轉換,而在其它一些情況下,我們利用顯式的類型轉換(cast)。
例如,如果x和N是整數,則表達式:((float)x)/N中包含兩種類型轉換,(float)是一種顯式轉換,把x的值轉換為浮點類型,接著用C語言中隱式類型轉換規則對N進行隱式轉換,使除法操作符的兩個參數都變味浮點數。
數據類型的概念不局限于內置的整數、浮點數和字符類型。作為一種組織軟件的高效方式,我們還定義自己的數據類型。
當定義C語言中的一個簡單函數時,就高效地創造了一種新的數據類型,其中函數實現的操作添加到用該函數參數表示的數據類型定義的操作中。
實際上,每個C程序在某種意義上都是一種數據類型,也就是說,是數值集合(內置類型或其它類型)及其相關操作(函數)的一個列表。
程序3.1 函數定義
#include <stdio.h> int lg(int); int main() {int i,N;for(i=1,N=10;i<=6;i++,N*=10){printf("%7d %2d %9d \n",N,lg(N),N*lg(N));} } int lg(int N) {int i;for(i=0;N>0;i++,N/=2);return i; }在C語言中用于實現對數據進行新操作的機制就是函數定義。
所有函數都有一個參數列表和可能的一個返回值。
通過給出函數名和它的返回值類型來說明(declare)函數。
在函數定義中,對變量命名(稱為參數),并根據這些名字表達計算,把它們作為局部變量看待。
當調用函數時,這些變量初始化為參數傳遞的值,接著執行函數代碼。
return語句是函數執行結束的指令,它還向調用函數返回值。
原則上,調用函數不受其他函數的影響,但也有很多例外情況。
定義和聲明的分開為組織程序提供了靈活性。
在寫程序時,目標是組成程序,以使重用舊程序解決新問題。
首先,通過仔細了解和準確確定程序所使用的操作,可以容易地把它擴展到支持這些操作的任意的數據類型上。
其次,通過仔細了解和準確確定程序的作用,可以把它執行的抽象操作添加到求解新問題所用的操作中。
程序3.2 數字類型
備受推薦的軟件工程實踐是把程序分為三個文件:
· 一個接口(interface),定義了數據結構以及聲明用于操作這個數據結構的函數。
· 在接口中聲明的函數的一個實現(implementation)。
· 一個客戶(client)程序,調用接口中聲明的函數,以便在更高抽象層次上使用。
結構體是集合類型,用于定義數據的集合,以便將整個集合作為一個單元來操縱,但仍可以通過一個給定數據集的個體成員的名字來引用它。
總結
以上是生活随笔為你收集整理的《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Broken Keyboard (a.k
- 下一篇: 算法训练 审美课