c语言构造数据类型

1.

/*

typedef:给老的数据类型取别名;可以简写复杂的数据类型;

*/

typedef unsigned int ui;
typedef int *pint;//pint是个类型,int *的新名字;
typedef int (*pfunc)(int ,int );//pfunc是个类型,表示函数指针类型;

int add(int a,int b)
{
    return a+b;
}

int main(int argc, const char * argv[])
{
    ui a = 10;//用新的数据类型定义一个变量;
    printf("a=%u\n",a);

    int b=20;
    pint p = &b;//p是int *型
    printf("*p=%d\n",*p);
//    pint q[3];//指针数组;
    pfunc pf = add;//pf是个变量
    printf("add rst=%d\n",pf(a,b));
    return 0;
}

2.

/*

结构体:关键字 struct

*/

#include <string.h>
struct student//定义了一种新的数据类型;
{
    char name[20];//成员变量;存储空间说明:加入是一个鞋柜,char占20个字节,需要20个空间,int 需要4的字节空间,所以工需要28个空间;
    int age;
    int height;
};
typedef struct student stu;

typedef struct student//定义了一种新的数据类型;
{
    char name[20];//成员变量;
    int age;
    int height;
}stu;

int main()
{
    struct student xiaoming = {"xiaoming",18,188};//struct student是数据类型:xiaoming是变量名;
    printf("sizeof(struct student) is %lu\n",sizeof(struct student));
    //访问结构体的成员变量
    xiaoming.age=30;
    //1:改名字
    strcpy(xiaoming.name,"wangcai");
    //2:升级
    strcat(xiaoming.name,"6s");

    printf("name:%s,age:%d,height:%d\n",xiaoming.name,xiaoming.age,xiaoming.height);

    stu xiaohong = {"xiaohong",18,165};
    printf("name:%s,age:%d,height:%d\n",xiaohong.name,xiaohong.age,xiaohong.height);
    return 0;
}
#include <stdlib.h>

typedef struct student//定义了一种新的数据类型;
{
    char name[20];//成员变量;
    int age;
    int height;
}stu;

int main()
{
    stu class[10]={};
    stu *pst;//pst就是一个指针,stu是pst指向的数据类型;pst可以指向class里的任何一个元素;
    //给数组所在元素赋值
    class[0].age = 18;
    //name :ios1518+2位学号
    //height :180,175~180之间浮动
    //age :15~24
    for(int i=0;i<10;i++)
    {
        sprintf(class[i].name,"ios1518%02d",i+1);
        class[i].age = 15+i;
        class[i].height=random()%10+175;//random()表示是随机数;random()%10表示取0~9之间的任意数字;
    }
    //遍历学生信息
    for(int i=0;i<10;i++)
    {
        printf("name=%s,age=%d,height=%d\n",class[i].name,class[i].age,class[i].height);
    }
    //按照身高排序:排序的主体是数组的元素,但key是元素的身高,排序需要将整个构造体全部元素进行排序
    for(int i=0;i<10-1;i++)
    {
        for(int j=0;j<10-i-1;j++)
        {
            if(class[j].height>class[j+1].height)
            {
                stu temp = class[j];
                class[j] = class[j+1];
                class[j+1] = temp;
            }
        }
    }
    printf("========================================\n");
    //遍历学生信息
    for(int i=0;i<10;i++)
    {
        printf("name=%s,age=%d,height=%d\n",class[i].name,class[i].age,class[i].height);
    }

    //使用pst指针访问数组,
//    pst = &class[0];//指针指向首个元素
    pst = class;
    printf("sizeof(stu)=%lu,sizeof(class)=%lu\n",sizeof(stu),sizeof(class));
    //访问第一个元素
    printf("first info ,name:%s,age:%d,height:%d\n",pst->name,pst->age,pst->height);
    printf("=========================================\n");
     //遍历学生信息
    for(int i=0;i<10;i++)
    {
        printf("name:%s,age:%d,height:%d\n",(pst+i)->name,(pst+i)->age,(pst+i)->height);
    }
}
typedef struct student
{
    char name[20];
    int age;
    int height;
    union//联合体:二选一的关系
    {
        int stuid;
        char nickname[20];
    };
    /*
     共享同一段内存,按情况去解析;
     内存大小按大的计算;//所以此结构体占用的内存是20+4+4+20=48字节;
     初始化的时候,按照第一个解析;
     */
}stu1;

int main()
{
    stu1 xiaohong = {"xiaohong",20,165,0};//开始的时候只能按照int进行初始化,不能用nickname;
    strcpy(xiaohong.nickname, "旺财");
    printf("%s\n",xiaohong.nickname);
    return 0;
}

3.

/*

枚举:一枚一枚的举出来;把一个变量的合理取值列举出来;

枚举是整形常量,把变量的合理取值列举出来;

列举的常量,默认从0开始,后面一次加1;

*/

typedef enum weekday
{
    Monday=1,//可设置,后面按照设置的值一次加1;
    Tuesday,
    Wednesday,
    Thursday,
    Firday,
    Saturday,
    Sunday
}WEEKDAY;
int main()
{
//    enum weekday day;
    WEEKDAY day;
    printf("sizeof(day)=%lu\n",sizeof(day));//sizeof(day)=4,因为其实际保存的都是int类型;
    printf("Monday=%d\n",Monday);
    printf("Sunday=%d\n",Sunday);
    printf("请输入周几\n");
    scanf("%d",&day);
    switch (day)
    {
        case Monday:
            printf("Monday\n");
            break;
        case Tuesday:
            printf("Tuesday\n");
            break;
        case Wednesday:
            printf("Wednesday\n");
            break;
        case Thursday:
            printf("Thursday\n");
            break;
        case Firday:
            printf("Firday\n");
            break;
        case Saturday:
            printf("Saturday\n");
            break;
        case Sunday:
            printf("Sunday\n");
            break;
        default:
            printf("error\n");
            break;
    }
    return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 11:49:23

c语言构造数据类型的相关文章

16-黑马程序员------C 语言学习笔记--- C语言复杂构造数据类型

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第五 复杂构造数据类型 01 结构体的定义: 一般形式: struct 结构体名 { 类型标识符1 成员1; 类型标识符2 成员2; ……………… ……………… 类型标识符n 成员n; }; 结构体类型用struct关键字定义,

黑马程序员 C语言:数据类型

C语言的数据类型 C语言程序中使用的各种变量都应预先加以说明,即先说明,后使用.对变量的说明可以包括三个方面: ·数据类型·存储类型·作用域 所谓数据类型是按被说明量的性质,表示形式,占据存储空间的多少,构造特点来划分的.在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 1.基本数据类型 基本数据类型最主要的特点是,其值不可以再分解为其它类型.也就是说,基本数据类型是自我说明的. 2.构造数据类型构造数据类型 是根据已定义的一个或多个数据类型用构造的方法来定义的.

C语言基本数据类型

所谓数据类型是按被定义变量的性质,表示形式,占据存储空间的多少,构造特点来划分的.在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 数据类型说明: 基本数据类型: 基本数据类型最主要的特点是,其值不可以再分解为其它类型.也就是说,基本数据类型是自我说明的. 构造数据类型: 构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的.也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”.每个“成员”都是一个基本数据类型或又是一个构造类型.在C语言中,构

C语言之数据类型

---恢复内容开始--- 在C语言中我们的数据类型分为以下几大类: (1)基本数据类型:int, float,double,char,_Bool(C99中新加的),枚举enum: 很多朋友对于enum被定义为是基本类型可能会有些迷惑,但是我们都知道枚举类型的特殊之处就是总能把数据变化为整形数据, 我们可以认为枚举就是一种特殊定义过的整形组合. (2)构造数据类型:数组,结构体(struct),共用体(union) 1.数组的基本格式:数据类型  数组名 [数组size] :我们可以这样理解它:数

构造数据类型、枚举类型

1.构造数据类型: 之前我们学习了基础数据类型(int.double.float.char等),数组类型.指针类型,这些都属于简单数据类型,而C语言支持使用基本数据类型构造出新的复合数据类型. 2.结构类型定义.声明: 对于有些数据,它是由若干不同类型的数据成员组合而成的一种复杂的构造型数据,而数组只允许存储相同类型的数据:多个数组之间不能建立关联关系:的局限性决定了需要创建一种新的复合数据类型来存储复杂类型的数据,因此,结构类型应运而生.(结构类型属于值类型) 定义结构类型: struct 结

C语言入门--数据类型

数据类型 什么是数据? 数据在我们的生活中随处可见,工资数据,股票数据,个人资料数据等等这些都可以称为数据.计算机就是为处理数据而生,从开始的数字数据计算到现在的多媒体数据的综合处理.那这些数据应该怎么去在计算机中以什么样的格式去存储和处理呢?这就需要用到我们数据类型. 什么是数据类型? 数据类型说起来很简单,就是用来规定存储空间的大小.什么意思呢?就是说我们将数据以存储空间的大小进行严格的划分,比如 占用四个字节的整数给他定制成整型类型的数据.以这样的规则去划分数据,C语言中就有了很多数据类型

C语言:数据类型、运算符、表达式

.:.:第二章:数据类型.运算符.表达式:.:. 第二章: 数据类型.运算符.表达式 C语言的数据类型 在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用.对变量的说明可以包括三个方面:·数据类型·存储类型·作用域 在本课中,我们只介绍数据类型说明.其它说明在以后各章中陆续介绍.所谓数据类型是按被说明量的性质,表示形式,占据存储空间的多少,构造特点来划分的.在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 1.基本数据类型 基本数据类型

C语言基本数据类型简介

C语言基本数据类型简介 1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型.整形和长整形. 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前.高位在后,例如0x12345678在内存中的存储如下: 地址:0x0012ff78 0x0012ff79 0x0012ff7a 0x0012ff7b 数据:

从头开始-03.C语言中数据类型

基本数据类型 整形: Int 4字节 %d / %i Short 2字节 %hd Long 8字节 %ld Longlong 8字节 %lld Unsigned 4字节 % 浮点型 单精度 Float 4字节 %f 双精度 Double 8字节 %lf 字符  char   1字节   %c 枚举:当一个变量只用几个固定的取值的时候使用枚举 特点:先定义枚举类型,然后使用枚举类型定义枚举变量 作用:提高代码的可读性,方便程序员之间的交流 注意:枚举类型的实质是整形 枚举定义的每一个成员都代表一个