第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將混合數(shù)據(jù)類型(int,float,char等)存儲在數(shù)組中?

如何將混合數(shù)據(jù)類型(int,float,char等)存儲在數(shù)組中?

C
慕森卡 2019-11-23 11:22:00
我想將混合數(shù)據(jù)類型存儲在數(shù)組中。怎么可以這樣呢?
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

使用聯(lián)合:


union {

    int ival;

    float fval;

    void *pval;

} array[10];

但是,您將必須跟蹤每個元素的類型。


查看完整回答
反對 回復 2019-11-23
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

數(shù)組元素必須具有相同的大小,這就是為什么它不可能的原因。您可以通過創(chuàng)建變體類型來解決它:


#include <stdio.h>

#define SIZE 3


typedef enum __VarType {

  V_INT,

  V_CHAR,

  V_FLOAT,

} VarType;


typedef struct __Var {

  VarType type;

  union {

    int i;

    char c;

    float f;

  };

} Var;


void var_init_int(Var *v, int i) {

  v->type = V_INT;

  v->i = i;

}


void var_init_char(Var *v, char c) {

  v->type = V_CHAR;

  v->c = c;

}


void var_init_float(Var *v, float f) {

  v->type = V_FLOAT;

  v->f = f;

}


int main(int argc, char **argv) {


  Var v[SIZE];

  int i;


  var_init_int(&v[0], 10);

  var_init_char(&v[1], 'C');

  var_init_float(&v[2], 3.14);


  for( i = 0 ; i < SIZE ; i++ ) {

    switch( v[i].type ) {

      case V_INT  : printf("INT   %d\n", v[i].i); break;

      case V_CHAR : printf("CHAR  %c\n", v[i].c); break;

      case V_FLOAT: printf("FLOAT %f\n", v[i].f); break;

    }

  }


  return 0;

}

并集元素的大小是最大元素的大小4。


查看完整回答
反對 回復 2019-11-23
  • 3 回答
  • 0 關注
  • 981 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號