typedef使用大全1(陣列) (轉)
typedef到處都是,但是能夠真正懂得typedef使用的不算太多。對於初學者而言,看別人的原始碼時對到處充斥的typedef往往不知所錯,而參考書又很少,所以在此給出一個原始碼,供大家參考
#include
#include
/* 避免Visual C的for與標準for的不同 */
#define for if (0); else for
/* dim(a)是用於計算a的維數,不過只能計算陣列的維數,不能計算指標的維數 */
#define dim(a) (sizeof(a)/sizeof(a[0]))
/* N1到N4是幾個常量,以列舉的形式定義 */
enum {N1 = 2, N2 = 3, N3 = 4, N4 = 5};
/* 這個C員都知道,就是將DataType定義為int型,便於擴充 */
typedef int DataType;
/* 定義一個一維陣列,陣列的元素維整型值 */
typedef DataType ARR1[N4];
/* 再定義一個一維陣列,陣列的元素維ARR1型,不過ARR1又是一個陣列,所以
* ARR2 實際上是一個矩陣
*/
typedef ARR1 ARR2[N3]; /* 此處完全等價為typedef int ARR2[N3][N4];*/
/* 按照ARR2的解釋,ARR3也是一個一維陣列,不過陣列元素的型別是ARR2的型別
* 所有ARR3是一個三維陣列
*/
typedef ARR2 ARR3[N2]; /* 此處完全等價為typedef int ARR3[N2][N3][N4];*/
/* 分別用定義好的ARR1,ARR2,ARR3定義三個變數a, b, c */
ARR1 a; /* 此處完全等價於:int a[N4]; */
ARR2 b; /* 此處完全等價於:int b[N3][N4]; */
ARR3 c; /* 此處完全等價於:int c[N2][N3][N4]; */
/* 下面給大家個示例看a,b,c如何使用 */
void exam_1()
{
for (int i=0; i for (int i=0; i b[i][j] = (i+1)*10 + (j+1); for (int i=0; i for (int k=0; k printf("
The a is :
"); for (int i=0; i printf("
"); printf("
The b is :
"); for (int i=0; i { for (int j=0; j printf("
"); } printf("
the c is:
"); for (int i=0; i { for (int j=0; j { for (int k=0; k printf("
"); } printf("
"); } } /* 下面函式給大家演示陣列在中的排列 */ void exam_2() { int *pn = NULL; pn = (int *)a; /* 等價於 pn = &a[0]; */ printf("
The a is :
"); for (int i=0; i<sizeof(a)/sizeof(DataType); i++) printf("%4d ", pn[i]); printf("
"); pn = (int *)b; /* 等價於 pn = &b[0][0]; */ printf("
The b is :
"); for (int i=0; i<sizeof(b)/sizeof(DataType); i++) printf("%4d ", pn[i]); printf("
"); pn = (int *)c; /* 等價於 pn = &c[0][0][0]; */ printf("
The c is :
"); for (int i=0; i<sizeof(c)/sizeof(DataType); i++) printf("%4d ", pn[i]); printf("
"); } int main(int argc, char* argv[]) { exam_1(); exam_2(); return 0; }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958105/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- typedef使用大全3(指向函式的指標) (轉)函式指標
- JavaScript陣列方法大全JavaScript陣列
- [轉]Oracle陣列的使用Oracle陣列
- 陣列1陣列
- iOS 字典轉陣列,陣列轉字典iOS陣列
- 在COM中使用陣列引數-陣列指標 (轉)陣列指標
- 再學JavaScript ES(6-10)全版本語法大全(4)- 偽陣列轉換為陣列JavaScript陣列
- JavaScript陣列方法大全(推薦)JavaScript陣列
- JavaScript 物件與陣列參考大全JavaScript物件陣列
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- 陣列1——求一個陣列的最大子陣列陣列
- VBA陣列的使用方法(轉)陣列
- Java陣列03:陣列使用Java陣列
- js將陣列轉字元,字元轉回陣列JS陣列字元
- javascript 原生常用api 陣列方法大全JavaScriptAPI陣列
- PHP陣列轉換為js陣列PHP陣列JS
- java 陣列(轉)Java陣列
- shell陣列(轉)陣列
- 輪轉陣列陣列
- 陣列筆記1陣列筆記
- [Shell] awk 陣列(1)陣列
- JS陣列專題1️⃣ ➖ 陣列扁平化JS陣列
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- 二維陣列和稀疏陣列互轉陣列
- PHP二維陣列轉一維陣列PHP陣列
- PHP 陣列轉樹結構/樹結構轉陣列PHP陣列
- Ghost命令列引數大全(轉)命令列
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- linux指令大全[1](轉)Linux
- Linux 指令大全(1) (轉)Linux
- 在COM中使用陣列引數-ICollection (轉)陣列
- 將CCUserDefault的“1,2,3”轉化為陣列陣列
- jQuery將類陣列物件轉換為陣列jQuery陣列物件
- 【Java】int[] 陣列 和 Integer陣列的轉換Java陣列
- 【Java】陣列使用Java陣列
- 陣列的使用陣列
- js陣列反轉JS陣列