iOS-C_Day13___结构体

2015.2.4

 

#include <stdio.h>

#include <string.h>

//struct

 

//struct Goods

//{

//    char name[20];

//    float price;

//    long amount;

//};

//

//int main(int argc, const char * argv[]) {

//    struct Goods book;

//    strcpy(book.name,"三国演义");

//    //printf("len = %ld\n", strlen(book.name));

//    book.price = 12.8;

//    book.amount = 1000;

//    

//    printf("name: %s price: %.2f amount: %ld\n",book.name, book.price,book.amount);

//

//    return 0;

//}

 

//声明一个数据类型

//typedef struct Student

//{

//    char name[20];

//    int age;

//    int num;

//}STU;

//

//int main(int argc,const char *argv[])

//{

//    STU stu;

//    strcpy(stu.name, "小红");

//    stu.age = 12;

//    stu.num = 50;

//    printf("name: %s\nage: %d\nnum: %d\n", stu.name,stu.age,stu.num);

//    

//    return 0;

//}

 

//1.用法一

//typedef unsigned char uint_8;

//typedef unsigned short uint_16;

//typedef unsigned int uint_32;

//typedef unsigned long uint_64;

//

//typedef int int_32;

//

//int main(int argc,const char *argv[])

//{

//    uint_32 a=100;

//    printf("a = %d\n", a);

//

//    return 0;

//}

 

//2.给结构体取别名

 

//3.声明复杂类型

 

//int (*p)(int,int);

//typedef int (*pfunc)(int,int);//int (*)(int,int)

//

//int add(int a, int b)

//{

//    return a+b;

//}

//

//int main(int argc,const char *argv[])

//{

//    pfunc p=add;

//    printf("%d\n",p(3,5));

//

//    return 0;

//}

 

//省约结构体名

//常用方法1

//结构体名可以跟数据类型名相同

//typedef struct Student{

//    char name[20];

//    int age;

//}Student;

 

//常用方法二

//typedef struct {

//    char name[20];

//    int age;

//}Student;

//int main(int argc, const char *argv[])

//{

//    struct Student stu={"小红",12};

//    

//    printf("name = %s, age = %d\n", stu.name,stu.age);

//

//    return 0;

//}

 

//结构体指针

//typedef struct {

//    char name[20];

//    int age;

//}Student,*PStudent;

 

//通过-> 运算符访问结构体中的成员变量

//int main(int argc, const char *argv[])

//{

//    PStudent pstu = NULL;

//    Student stu={"小华",22};

//    pstu = &stu;

//    

//    printf("name = %s age = %d\n", pstu->name,pstu->age);

//    return 0;

//}

 

//结构体数组

//int main(int argc,const char *argv[])

//{

//    Student *pstu;

//    Student stu;

//    pstu = &stu;

//    

//    //scanf("%s%d",stu.name,&stu.age);

//    scanf("%s%d",pstu->name,&pstu->age);

//    

//    printf("name = %s , age = %d\n", stu.name,stu.age);

//    return 0;

//}

 

//int main(int argc,const char *argv[])

//{

//    Student stu[5]={{"小华",12},{"小乐",8},{"小花",10},{"小飞",14},{"小黄",7}};

//    

//    for (int i=0; i<5-1; i++) {

//        for (int j=0; j<5-i-1; j++) {

//            if (stu[j].age > stu[j+1].age) {

//                Student temp=stu[j];

//                stu[j]=stu[j+1];

//                stu[j+1]=temp;

//            }

//        }

//    }

//    for (int i=0; i<5; i++) {

//        printf("%s-----%d\n",stu[i].name,stu[i].age);

//    }

//

//    return 0;

//}

 

//int main(int argc,const char *argv[])

//{

//    Student stu[5]={{"小华",12},{"小乐",8},{"小花",10},{"小飞",14},{"小黄",7}};

//    PStudent pstu = stu;

//    

//    for (int i=0; i<5-1; i++) {

//        for (int j=0; j<5-i-1; j++) {

//            if ((pstu+j)->age > (pstu+j+1)->age) {

//                Student temp=*(pstu+j);

//                *(pstu+j)=*(pstu+j+1);

//                *(pstu+j+1)=temp;

//            }

//        }

//    }

//    for (int i=0; i<5; i++) {

//        printf("%s-----%d\n",(pstu+i)->name,(pstu+i)->age);

//    }

//    

//    return 0;

//}

 

//结构体嵌套

// 写法一

//typedef struct {

//    char name[20];

//    int age;

//    struct Date

//    {

//        int year;

//        int month;

//        int day;

//    }date;//声明数据类型的时候直接声明变量

//    char sex;

//}Employer;

 

//写法二

//typedef struct Date

//{

//    int year;

//    int month;

//    int day;

//}Date;

//

//typedef struct {

//    char name[20];

//    int age;

//    Date date;

//    char sex;

//}Employer;

//

//

//int main(int argc,const char *argv[])

//{

//    Employer xiaohua={"小华",12,{2014,12,4},1};

//    printf("name:%s age:%d %d年%d月%d日,性别:%d\n",xiaohua.name,xiaohua.age, xiaohua.date.year,xiaohua.date.month,xiaohua.date.day, xiaohua.sex);

//    

//

//    return 0;

//}

 

//声明结构体类型

//struct Student{

//    char name[20];

//    int age;

//};

//声明结构体类型同时定义变量

 

//struct Student

//{

//    char name[20];

//    int age;

//}xiaoHong={"小红",15},xiaoHua;

 

 

//struct

//{

//    char name[20];

//    int age;

//}xiaoHong={"小红",15},xiaoHua;

 

//3.给结构体取名

//typedef struct {

//    char name[20];

//    int age;

//}Student;

//

//int main(int argc,const char *argv[])

//{

//    //struct Student stu;

//    Student xiaoHong;

//    

//    printf("%s %d\n", xiaoHong.name,xiaoHong.age);

//

//

//    return 0;

//}

 

//结构体大小

//不是成员变量的相加,是成员变量对齐后的内存大小

typedef struct {

    double f2;

    char name[15];

    int a;

    long b;

    long double l;

    float f;

}StructSize;

 

int main(int argc,const char *argv[])

{

 

    printf("%ld\n",sizeof(StructSize));

 

    return 0;

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。