日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

typedef 数组使用详解

發(fā)布時(shí)間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 typedef 数组使用详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

typedef到處都是,但是能夠真正懂得typedef使用的不算太多。對(duì)于初學(xué)者而言,看別人的源碼時(shí)對(duì)到處充斥的typedef往往不知所錯(cuò),而參考書又很少,所以在此給出一個(gè)源碼,供大家參考。



懂得這些,基本上是 對(duì)typedef 合格了, 有時(shí)間,我會(huì)把c,c++中使用typedef的例子和標(biāo)準(zhǔn)中規(guī)定詳解解讀,敬請(qǐng)期待。

?

#include <stdio.h>

#include <iostream.h>

?

/* 避免Visual C的for與標(biāo)準(zhǔn)for的不同 */

#definefor? if (0);??elsefor

?

/* dim(a)是用于計(jì)算a的維數(shù),不過只能計(jì)算數(shù)組的維數(shù),不能計(jì)算指針的維數(shù) */

#define dim(a) (sizeof(a)/sizeof(a[0]))

?

/* N1到N4是幾個(gè)常量,以枚舉的形式定義 */

enum {N1 = 2, N2 = 3, N3 = 4, N4 = 5};

?

/* 這個(gè)C程序員都知道,就是將DataType定義為int型,便于擴(kuò)充 */

typedefint DataType;

?

/* 定義一個(gè)一維數(shù)組,數(shù)組的元素維整型值 */

typedef DataType ARR1[N4];

?

/* 再定義一個(gè)一維數(shù)組,數(shù)組的元素維ARR1型,不過ARR1又是一個(gè)數(shù)組,所以

?* ARR2 實(shí)際上是一個(gè)矩陣

?*/

typedef ARR1 ARR2[N3]; /*此處完全等價(jià)為typedef int ARR2[N3][N4];*/

?

/* 按照ARR2的解釋,ARR3也是一個(gè)一維數(shù)組,不過數(shù)組元素的類型是ARR2的類型

?* 所有ARR3是一個(gè)三維數(shù)組

?*/

typedef ARR2 ARR3[N2];/* 此處完全等價(jià)為typedef int ARR3[N2][N3][N4];*/

?

/* 分別用定義好的ARR1,ARR2,ARR3定義三個(gè)變量a, b, c */

ARR1 a; /* 此處完全等價(jià)于:int a[N4]; */

ARR2 b; /* 此處完全等價(jià)于:int b[N3][N4]; */

ARR3 c; /* 此處完全等價(jià)于:int c[N2][N3][N4]; */

?

/* 下面函數(shù)給大家個(gè)示例看a,b,c如何使用 */

void exam_1()

{

??? for (int i=0; i<dim(a); i++) a[i] = i+1;

?

??? for (int i=0; i<dim(b); i++)for (int j=0; j<dim(b[0]); j++)

??? ????b[i][j] = (i+1)*10 + (j+1);

?

??? for (int i=0; i<dim(c); i++)for (int j=0; j<dim(c[0]); j++)

??? ????for (int k=0; k<dim(c[0][0]); k++) c[i][j][k] = (i+1)*100 + (j+1)*10 + (k+1);

?

??? printf("\nThe a is :\n");

??? for (int i=0; i<dim(a); i++) printf("%4d ", a[i]);

??? printf("\n");

?

??? printf("\nThe b is :\n");

??? for (int i=0; i<dim(b); i++)

??? {

??? ????for (int j=0; j<dim(b[0]); j++) printf("%4d ", b[i][j]);

??? ????printf("\n");

??? }

?

??? printf("\nthe c is:\n");

??? for (int i=0; i<dim(c); i++)

??? {

??? ????for (int j=0; j<dim(c[0]); j++)

??? ????{

??? ????????for (int k=0; k<dim(c[0][0]); k++) printf("%4d ", c[i][j][k]);

??? ????????printf("\n");

??? ????}

??? ????printf("\n");

??? }

}

?

/* 下面函數(shù)給大家演示數(shù)組在內(nèi)存中的排列 */

void exam_2()

{

??? int *pn =NULL;

?

??? pn = (int *)a; /*等價(jià)于 pn = &a[0]; */

??? printf("\nThe a is :\n");

??? for (int i=0; i<sizeof(a)/sizeof(DataType); i++) printf("%4d ", pn[i]);

??? printf("\n");

?

??? pn = (int *)b; /*等價(jià)于 pn = &b[0][0]; */

??? printf("\nThe b is :\n");

??? for (int i=0; i<sizeof(b)/sizeof(DataType); i++) printf("%4d ", pn[i]);

??? printf("\n");

?

??? pn = (int *)c; /*等價(jià)于 pn = &c[0][0][0]; */

??? printf("\nThe c is :\n");

??? for (int i=0; i<sizeof(c)/sizeof(DataType); i++) printf("%4d ", pn[i]);

??? printf("\n");

}

?

?

?

int main(int argc,char* argv[])

{

??? exam_1();

??? exam_2();

??? return 0;


總結(jié)

以上是生活随笔為你收集整理的typedef 数组使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。