首页 > 代码库 > 数组、结构体、联合体、枚举类型、类型转换

数组、结构体、联合体、枚举类型、类型转换

1、数组

int num[2] = { 1, 2 };//1×2,num[0]=1
int num[2][2] = { { 00, 01 }, { 10, 11 } };//2×2,num[1][1]=11
int num[2][2][2] = { {{000,001},{010,011}}, {{100,101},{110,111}} };//2个2×2数组,num[1][1][1]=111

 2、结构体

#include <stdio.h>
int main()
{
    struct Family{
        int age;
        char name[32]; //分配内存,占32字节
        char address[64];
    }wei;//Family结构体名,wei变量名,“;”不可省略
    //或写成struct Family wei;
    //若wei是wei[5],则为结构体数组
    printf("Input age:");
    scanf("%d", &wei.age);
    printf("Input name:");
    scanf("%s", &wei.name);
    printf("Input address:");
    scanf("%s", &wei.address);

    printf("name:%s\n", wei.name);
    printf("age:%d\n", wei.age);
    printf("address:%s", wei.address);
    return 0;
}

3、联合体

#include <stdio.h>
int main()
{
    union Family{
        int age;
        char name[32];
        char address[64];
    }wei;//Family联合名,wei变量名,“;”不可省略
    //或写成union Family wei;
    printf("Input age:");
    //输入一次,显示一次,因为新的赋值会替换掉 
    scanf("%d", &wei.age); printf("age:%d\n", wei.age);
    printf("Input name:");
    scanf("%s", &wei.name);    printf("name:%s\n", wei.name);
    printf("Input address:");
    scanf("%s", &wei.address); printf("address:%s", wei.address);
    return 0;
}

结构体与联合体区别:

内存:struct为所有变量占用字节之和;union为最大成员变量占用的字节数

赋值有效值:struct每个成员变量各自赋值;union最后一次赋值有效

4、枚举类型

#include<stdio.h>
int main()
{
    enum Choice{a,b,c=64,d};//enum 枚举类型名{枚举元素列表};
    printf("a=%d\n", a);//第一个元素默认为0,依次递增1.a=0
    printf("d=%d\n", d);//若已赋值,则之后元素依次递增1.d=65
    printf("d=%c\n", d);//元素可以赋值给任意数据类型。d=A
    return 0;
}

5、类型转换(字符-数,整-浮点)

#include<stdio.h>
#include<stdlib.h>//函数依赖的头文件
int main()
{
    char *str = "12.34";//定义字符串变量
    printf("字符串转整数:%d\n", atoi(str));//函数atoi(),12
    printf("字符串转浮点数:%f\n", atof(str));//函数atof(),12.340000
    return 0;
}
--------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
    int num = 65;
    printf("%f\n",num);//整型转浮点型
    float f = (float)num;
    printf("%f\n",f);//与上等效
    return 0;
}

 

数组、结构体、联合体、枚举类型、类型转换