typedef關鍵字

// 時間:2012.4.10 編程

// 目的:測試typedef 關鍵字 數組

// 修改時間:2013-04-15 函數

#include<stdio.h> 測試

#include<stdlib.h> this

void swap(int a) spa

{ 指針

printf("this is a test\n"); 對象

} three

main() io

{

typedef int INT;                             // 定義整型數據類型的別名                    INT

typedef unsigned int UNINT;                  // 定義無符號整型數據類型的別名              UNINT

typedef char CHAR;                           // 定義字符數據類型的別名                    CHAR

typedef char * pCHAR;                        // 定義字符指針類型別名                      pCHAR

typedef char line_CHAR_10[10];               // 定義字符型一維數組(10個元素),數組類型別名      line_CHAR_10

typedef char (* line_pCHAR_10)[10];          // 定義字符型一維數組(10個元素),指針類型別名       

typedef char line_CHAR_10_10[10][10];        // 定義字符型二維數組([10][10]),數組類型別名      line_CHAR_10_10

typedef char (* line_pCHAR_10_10)[10][10];   // 定義字符型二維數組([10][10]),指針類型別名      line_PCHAR_10_10

typedef char line_CHAR_10_10_10[10][10][10];        // 定義字符型三維數組([10][10][10]),數組類型別名  line_CHAR_10_10_10

typedef char (* line_pCHAR_10_10_10)[10][10][10];   // 定義字符型三維數組([10][10][10]),指針類型別名  line_PCHAR_10_10_10

typedef void(*ptr_to_func)(int);             // ptr_to_func是一種數據類型,能夠定義函數指針變量,函數參數int無返回值

ptr_to_func fun;

line_CHAR_10         one_line1;           // 定義一維數組變量

line_CHAR_10_10      tow_line1;           // 定義二維數組變量

line_CHAR_10_10_10   three_line1;         //爲三維數組變量名

pCHAR                 p;                     // char 型指針變量

line_pCHAR_10         p1;                    // char型一維數組指針

line_pCHAR_10_10      p2;                    // char型二維數組指針

line_pCHAR_10_10_10   p3;                    // char型三維數組指針

p3 = &three_line1;

p2 = three_line1;

p1 = tow_line1;

p2 = &tow_line1;

p  = one_line1;

fun=&swap;      //函數指針使用方法

// printf("%#X\n",r);  //%0.8x  x表示按十六進制輸出。8表示輸出數據佔8格。0表示不足8位用0填補,默認爲空格。.表示分割

}

5. typedef & 複雜的變量聲明

在編程實踐中,尤爲是看別人代碼的時候,常常會碰到比較複雜的變量聲明,使用typedef做簡化自有其價值,好比:

下面是三個變量的聲明,我想使用typdef分別給它們定義一個別名,請問該如何作?

>1:int *(*a[5])(int, char*);
>2:void (*b[10]) (void (*)());
>3. doube(*)() (*pa)[9];

答案與分析:

對複雜變量創建一個類型別名的方法很簡單,你只要在傳統的變量聲明表達式裏用類型名替代變量名,而後把要害字typedef加在該語句的開頭就好了。

1,int* (*a[5])(int, char*)]

定義了一個數組 a[5],數組元素類型是函數指針類型,函數返回值類型是int*,參數是,int和char*。

這樣的書寫沒法辨認,所以有了下面的改進。

pFUN是新命名的一個類型,

typedef int* (*pFUN)(int, char*)

pFUN a[5],等價於int* (*a[5])(int, char*)]

2,void (*b[10]) (void (*)());

定義了一個數組 b[10],數組元素類型是函數指針A類型,函數的無返回值,參數類型是函數指針B類型

函數B無返回值,無參數。

更加沒法辨認的一個類型。

pFUN1是新命名的一個類型。

typedef void (*pFUN1)();

pFUN2是新命名的一個類型。

typedef void (*pFUN2)(pFUN1)

使用定義的 pFUN2 類型來聲明對象,等價於void (*b[10]) (void (*)());

pFun b[10];

3,doube(*)() (*pa)[9];

自行分析,呵呵

相關文章
相關標籤/搜索