freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

大學計算機程序設計基礎c語言5ppt-資料下載頁

2024-10-18 13:22本頁面
  

【正文】 于: a[i] 、 amp。( a[i][0]) *(a+i)+j 第 i行第 j列元素地址,即 a[i][j]地址。 相當于: a[i]+j、 amp。( a[i][j]) *(*(a+i)+j) 第 i行第 j列元素值,即 a[i][j]值。 相當于: *(a[i]+j)、 a[i][j] 在該表的各種表示形式中,只有 amp。(a[i][j]) 、 a[i]+j 、 *(a+i)+j 是實際計算機內(nèi)存的物理地址 a[i][j] 、 *(a[i]+j) 、 *(*(a+i)+j) 是它們各自的值,占用計算機內(nèi)存; 其它形式都是表示地址的指針常量,沒有被分配具體內(nèi)存空間。例如,并不存在 a[i] 這樣一個實際的變量,它只是一個指針常量,運算“ amp。(a[i])”只是一種地址計算方式而已,并不是求內(nèi)存實際存在的變量a[i]的內(nèi)存地址。 2. 指向二維數(shù)組元素的指針變量 ? 用指針變量表示二維數(shù)組的元素 可以直接使用數(shù)組成分類型的指針變量訪問數(shù)組的成分 C數(shù)組的存儲分配方式 在 C中,按“行優(yōu)先”原則分配數(shù)組元素的存儲空間。也就是說,對數(shù)組 a來說,它的各個成分被分配的內(nèi)存空間的順序是: 首先分配第 0行元素; 然后分配第 1行元素; … ; 最后再分配第 n1行元素,如此等等。 每行元素按下標值從小到大進行。 a成分 地址 內(nèi)存 a[2][3] A016 a[2][2] A014 a[2][1] A012 a[2][0] A010 a[1][3] A00E a[1][2] A00C a[1][1] A00A a[1][0] A008 a[0][3] A006 a[0][2] A004 a[0][1] A002 a[0][0] A000 ? int a[3][4]。 ? 假設從首地址 A000開始分配內(nèi)存空間 ? 每個元素占 2個字節(jié) ? 數(shù)組 a的存儲分配圖 使用成分類型指針訪問兩維數(shù)組元素 設有聲明: int *aptr, a[m][n] ,x 。 則可以直接用 aptr訪問 a的成分。使用方法是: ? 首先使 aptr指向 a的某個成分 a[i][j], ? 然后以該成分的地址為基點,計算所要訪問的數(shù)組成分的相對地址,并進行訪問。最常用的地址基點是 a數(shù)組的第一個成分 a[0][0],例如 aptr = amp。(a[0][0]) 由于 a[0]指向 a[0][0],所以這個運算還可以寫成 aptr = a[0] ? 在上述賦值運算的前提下, a的成分 a[u][v]的地址為 aptr+u*n+v ? 若想把 a[u][v]的值送入變量 x中,可以使用賦值運算: x = *(aptr+u*n+v) 這個運算等價于 x = a[u][v] ? 若想把某表達式 e的值送入數(shù)組 a的成分 a[u][v]中,可以使用賦值運算: *(aptr+u*n+v) = e 這個運算等價于 a[u][v] = e a成分 地址 內(nèi)存 a[2][3] A016 a[2][2] A014 a[2][1] A012 a[2][0] A010 a[1][3] A00E a[1][2] A00C a[1][1] A00A a[1][0] A008 a[0][3] A006 a[0][2] A004 a[0][1] A002 a[0][0] A000 ? 地址計算公式“ aptr+u*n+v” 基點 + 行數(shù) * 每行元素個數(shù) + 剩余行的零頭元素個數(shù) ? 例如, a[2][1]的地址是: aptr+2*4+1 a成分 地址 內(nèi)存 a[2][3] A016 a[2][2] A014 a[2][1] A012 a[2][0] A010 a[1][3] A00E a[1][2] A00C a[1][1] A00A a[1][0] A008 a[0][3] A006 a[0][2] A004 a[0][1] A002 a[0][0] A000 若再考慮每個元素占用的內(nèi)存尺寸, 2*4+1 還要乘以 int 類型一個變量占用內(nèi)存空間數(shù) 2 ,最后 a[2][1] 對應的具體內(nèi)存地址是: A000 + (2*4+1)*2 為 A012 。 當然,在用戶程序中只要寫地址計算公式“ aptr+u*n+v”即可 . 沒有必要也不允許 考慮每個元素占用的存儲空間尺寸。 沒有必要,也不允許,更不可能寫出具體的地址計算計算算式“ A000 + (2*4+1)*2”。 例 編函數(shù),求 m*n個元素的給定 float型數(shù)組各個元素之乘積。 float arrmul(int m , int n , float *arr){ int u, v。 float mul。 mul = 1。 for( u=0。 um。 u++) for( v=0。 vn。 v++) mul = mul * (*(arr+u*n+v))。 return mul 。 } 設有聲明 float a[10][15]。 則可以用如下任何一種形式調用該函數(shù): arrmul(10,15,amp。(a[0][0]) arrmul(10,15,a[0]) arrmul(10,15,*a) 在本例中,形式參數(shù)是一個指向 float類型的指針變量,實在參數(shù)把a數(shù)組第一個元素 a[0][0]的指針(地址)送入形式參數(shù) arr之中。amp。(a[0][0])、 a[0]、 *a都是 a[0][0]的地址。實際上本例是把二維數(shù)組作為一維數(shù)組對待的,地址計算是采用一維方式進行的。 運行結果演示 a (float **) a[0] (float *) a[0][0] (float) … a[0][n1] (float) a[1] (float *) a[1][0] (float) … a[1][ n1] (float) … … … … a[m2] (float *) a[m2][0] (float) … a[m2][ n1] (float) a[m1] (float *) a[m1][0] (float) … a[m1][ n1] (float) 167。 位段 為了適應系統(tǒng)程序設計的需要,通過使用位段, C 允許在結構體中把整數(shù)類型成員存儲在比通常使用的空間更小的空間內(nèi)。比如在微型計算機內(nèi)一般把 int 類型數(shù)據(jù)存儲成 2 個字節(jié)( 16bit),使用位段可以把它存儲在比 2 個字節(jié)少的電 bit 內(nèi)。例 : struct s { unsigned a:4。 unsigned b:5,c:7。 } u 。 結構體變量 u 有三個成員 a 、 b 、 c 分別占用 4 bit 、 5 bit 、 7 bit 一共 2 個字節(jié)。 U 的成員 a、 b、 c 稱為位段。 位段通過在結構體成員名后加上冒號 “:” 和一個整數(shù)類型常量表達式來聲明,整數(shù)類型常量表達式指明相應位段的寬度。 位段一般依賴于具體計算機系統(tǒng),比如 1. 計算機系統(tǒng)一個機器字的寬度、 2. 計算機系統(tǒng)存儲數(shù)據(jù)是采用 “高位存儲法” 還是 “低位存儲法” 等等。使用位段要注意: ? 位段僅允許聲明為各種整數(shù)類型; ? 位段長度不允許超越特定計算機的自然字長; ? 位段占用的空間不能跨越特定計算機的地址分配邊界(該邊界與特定計算機的自然字長有關),出現(xiàn)跨越,將移到下一個機器字。 ? 位段通常用于與具體計算機相關的程序中,因此破壞程序的可移植性。 167。 職工登記卡 —共用體 【 例 】 學校的職工登記卡,可能包含如下內(nèi)容:姓名、出生時間、性別、參加工作時間、職別;然后對于不同職別的人員則包含不同信息如下 : ? 干部:級別( 校、處、科、其他 ); ? 教師:最后學歷( 碩士、博士、其他 )、 職稱( 教授、講師、助教 )、 專業(yè)( 數(shù)學、物理、化學、計算機 )。 描述職工登記卡的數(shù)據(jù)結構。 解:兩種人員卡片的形式分別如圖所示。 姓名 : 姓名 : year: month: day: year: month: day: 出生時間 : 出生時間 : 性別 : 性別 : year: month: day: year: month: day: 工作時間 : 工作時間 : 職別 : 干部 職別 : 教師 級別 : 學位 : 職稱 : 專業(yè) : 干部 教師 C為適應描述這種可變表格數(shù)據(jù)結構的需要,提供了共用體類型??梢圆扇」灿皿w與結構體結合的方式描述這種結構可變的表格。上述職工登記卡的數(shù)據(jù)類型可以定義成結構體類型 typecardperson 如下: typedef struct cardperson{ char name[8] 。 /* 姓名 */ datetype birthdate 。 /* 出生時間 */ sextype sex。 /* 性別 */ datetype workdate 。 /* 參加工作時間 */ categorytype category 。 /* 職別 */ category_tab_type category_tab 。 /* 不同職別的不同信息 */ } typecardperson 。 // 日期:年、月、日 typedef struct { int year, month, day 。 } datetype。 typedef num { male , female } sextype 。 // 性別:男、女 // 職別 :工人、干部、教師 typedef enum { worker,cadre,teacher }categorytype。 其中, category_tab_type 是共用體類型,類型定義已經(jīng)提前定義如下: typedef union { cadrefieldtype cadrefield。 teacherfieldtype teacherfield。 } category_tab_type。 /* 描述不同類人員的共用體 */ typedef struct { degreetype degree 。 /* 教師記錄的信息 */ titletype title 。 fieldtype field } teacherfieldtype 。 /*專業(yè):數(shù)、物、化、計算機 */ typedef enum{ mathematics,physics,chemistry,puter} fieldtype。 /*職稱:教授、講師、助教 */ typedef enum { professor,lectur r,a sistant} titl typ 。 /*學位 : 碩士、博士、其他 */ doctor,master,other } degreetype。 type f struct { jobtype job 。 /* 干部記錄的信息 */ } cadr fieldtype 。 干部級別:校、處、科、一般 */ school,depar m nt, ectio ,gen al } jobtype。 與結構體類似 “ 共用體類型定義 ” 呈如下兩種形式: 形式 A 形式 B union { t id, ... ,id 。 ... t id, ... ,id 。 } union sid { t id, ... ,id 。 ... t id, ... ,id 。 } 共用體類型 上述形式中除了 unio
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1