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

数组名是地址。struct、union名不是地址,必须使用&获取地址。

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{//struct 结构体类型名{数据类型n 变量名n;};
        int age;
        char name[32]; //分配内存,占32字节
        char address[64];
    }wei;//Family结构体名,wei变量名,“;”不可省略
    //或去掉wei,增加struct Family wei;//定义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{ //union 联合体类型名{数据类型n 变量名n;};
        int age;
        char name[32];
        char address[64];
    }wei;//Family联合名,wei变量名,“;”不可省略
    //或去掉wei,增加union Family wei;//定义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;
}
#include<iostream>
using namespace std;

enum WeekDay{sun,mon,tue,wed,thu,fri,sat};//默认sun=0,mon=1,...

int main(){
    enum WeekDay x;//定义WeekDay类型的枚举变量x
    x=mon;//枚举变量不能直接用整型赋值,如x=1。因为类型不同,x是WeekDay类型的枚举变量,1是整型
    cout<<x<<endl;//1,输出枚举常量mon对应的值。
    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;
}

 

posted @ 2017-05-04 23:15  夕西行  阅读(724)  评论(0编辑  收藏  举报