结构体(构造类型),可以存放不同类型的数组
类型 变量名 = 初值
struct 结构体名
{
类型说明符 成员名;
};
例子:
#import <Foundation/Foundation.h>
struct person {
int age;
char name[20];
char sex;
}; //分号注意!!!
typedef struct person Person; //类型重新定义 struct person重新定义为Person
int main(int argc, const char * argv[])
{
Person per1 ={26,"ZhaoYunlong",‘m‘};
Person per2 ={23,"ShenQingjun",‘m‘};
return 0;
}
//考试题
char 占 1个字节
int 占4个字节
double 占8个字节
float 占 4个字节
short 占 2个字节
long 占8个字节
bool 占1个字节
typedef
C语言中表示类型定义
1.typedef struct person Person; //类型重新定义 struct person重新定义为Person
或者
2.typedef struct person {
int age;
char name[20];
char sex;
}Person;
赋值
三个人选出年龄最小的
int main(int argc, const char * argv[])
{
Person per1 ={26,"ZhaoYunlong",‘m‘};
Person per2 ={23,"ShenQingjun",‘m‘};
Person per3 ={26,"LoiChundong",‘f‘};
Person min =per1.age<per2.age?per1:per2;
min = min.age<per3.age?min:per3;
printPerson(min);
return 0;
}
成员访问
MyRect rect = {{3,5},{100,100}};
rect.origin.x = 15;
rect.size.width = 150; //必须点到最后
嵌套
typedef struct myorigin {
float x;
float y;
}MyOrigin;
typedef struct mysize{
float width;
float height;
}MySize;
typedef struct myrect{
MyOrigin origin;
MyOrigin size;
}MyRect;
int main(int argc, const char * argv[])
{
MyRect rect = {{3,5},{100,100}};
rect.origin.x = 15;
rect.size.width = 150;
return 0;
}
chong gao dao di <
chong di dao gao >
1、定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
#import <Foundation/Foundation.h>
typedef struct days{ //定义日期结构体
int year;
int month;
int day;
}Days;
int days(Days stu){
int Sum=0;
int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < stu.month - 1; i++) {
Sum +=a[i];
}
Sum+=stu.day; //剩下的一个月几天
if (stu.month>2){
if ((stu.year % 400==0) || ((stu.year % 4==0) && (stu.year % 100 !=0))) {
Sum++;
}
}
return Sum;
}
int main(int argc, const char * argv[])
{
Days sds={1992,3,2};
printf("%d\n",days(sds));
//Days sds;
//scanf("%d %d %d\n",&sds.year,&sds.month,&sds.day);
printf("%d\n",days(sds));
return 0;
}
原文:http://8694639.blog.51cto.com/8684639/1372956