|
发表于 2012-12-7 10:59:30
|
显示全部楼层
本帖最后由 histamine 于 2012-12-7 11:09 编辑
1. 如果陣列元素並非單一性質,
例如 a[] = { "A1028235343", "apple" , "60-3-7", 165.3};
該如何宣告?
=>- #include <stdio.h>
- typedef enum _TYPE_ID {
- TYPE_ID_STRING,
- TYPE_ID_DOUBLE,
- TYPE_ID_INTEGER
- } TYPE_ID;
- typedef struct _ANY_TYPE {
- TYPE_ID id;
- union {
- char *v_string;
- double v_double;
- int v_int;
- } value;
- } ANY_TYPE;
- ANY_TYPE a[] =
- {
- { TYPE_ID_STRING, { v_string : "A1028235343" } },
- { TYPE_ID_STRING, { v_string : "apple" } },
- { TYPE_ID_STRING, { v_string : "60-3-7" } },
- { TYPE_ID_DOUBLE, { v_double : 165.3 } },
- { TYPE_ID_INTEGER, { v_int : 123 } }
- };
- int main ( void )
- {
- int i;
- for ( i = 0; i < sizeof( a ) / sizeof( *a ); i++ )
- {
- switch( a[i].id )
- {
- case TYPE_ID_STRING:
- printf( "Type = string, Value = %s\n", a[i].value.v_string );
- break;
- case TYPE_ID_DOUBLE:
- printf( "Type = double, Value = %f\n", a[i].value.v_double );
- break;
- case TYPE_ID_INTEGER:
- printf( "Type = int, Value = %d\n", a[i].value.v_int );
- break;
- default:
- printf( "Unknown Type!\n" );
- break;
- }
- };
- return 0;
- }
复制代码 |
|