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;
}