//
// main.m
// CLesson_06_1
//
// Created by ly on 15/10/14.
// Copyright (c) 2015年 ly. All rights reserved.
//
#import <Foundation/Foundation.h>
#pragma mark 结构体声明
/*
//什么是结构体
1.结构体是一种构造类型,有基本数据类型组合而成的一种新类型,与数组的区别:构成结构体的基本数据类型可以不相同,数组必须是同类型的数据构成
2.结构体必须先声明,声明这个结构体由那些数据类型构成的,相当于基本数据类型的“int、char、double、”之类的类型说明。 声明完成后就在文件中创造出了这种新的数据类型,就可以使用这种新类型定义变量来保存数据。
*/
//声明一个结构体类型,由两个整型数组成,一个叫x表示x轴坐标,另一个叫y表示y轴坐标
struct zuoBiao {
//成员变量
int x;//第一个成员变量,变量的类型是整型,变量的名字是x
int y;//第二个成员变量,变量的类型是整型,变量的名字是y
};
//匿名结构体:没有名字的结构体,在“结构体名”的位置,只有一个空格
struct
{
float a;
float b;
}noName = {12.30, 45.78}, noName1 = {36.12,78.94};//因为匿名结构体没有结构体名,所以在main或其他自定义函数中无法获取到这种类型的结构体,如果想使用,必须在声明完成后马上创建这种类型的变量
//声明一个结构体类型,名字叫:student 成员变量有:name、age、gender
struct student
{
char name[20];
int age;
char gender;
};
#pragma mark typedef
//一般我们可以使用typedef将较长的结构体类型修饰符,替换为另一个名字
typedef struct student student;
//typedef的另一种用法:在声明结构体类型的同时,找一个新名字来代替
typedef struct teacher{
char name[20];
int age;
}Teacher;
int main(int argc, const char * argv[]) {
#pragma mark 定义结构体类型的变量
/*
//定义一个“zuoBiao”类型的结构体变量。
//struct zuoBiao,使用struct关键字 + 结构体名,共同组成了变量的类型修饰符
//结构体变量赋值方法和数组赋值方法一样,用{}将成员变量的值包裹起来,使用‘,’分隔开各个值。
struct zuoBiao point1 = {12, 15};
//访问结构体变量的值:point1.x 使用结构体变量名 + “.” + “成员变量名”的方式访问。
printf("point1.x = %d point1.y = %d\n", point1.x, point1.y);
//修改point1的x为99,y为88,先访问到对应得成员变量,然后修改值。
point1.x = 99;
point1.y = 88;
printf("point1.x = %d point1.y = %d\n", point1.x, point1.y);
struct zuoBiao point2 = {18, 17};
printf("point2.x = %d point2.y = %d\n", point2.x, point2.y);
//结构体变量之间可以整体赋值,但是数组不行
struct zuoBiao point3 = point2;
printf("point3.x = %d point3.y = %d\n", point3.x, point3.y);
printf("noName.a = %.2f noName.b = %.2f\n",noName.a,noName.b);
*/
//定义一个student类型的结构体变量
struct student stu1 = {"zhangSan", 18, 'm'};
student stu2 = {"xiaoHong", 20, 'w'};
//打印stu1的年龄
printf("%s的年龄是:%d岁\n",stu1.name, stu1.age);
//修改stu1的年龄
stu1.age = 21;
printf("%s的年龄是:%d岁\n",stu1.name, stu1.age);
//修改name为shuKui
//因为字符串在C语言中是使用字符串数组类型保存的,数组不能整体赋值,所以使用普通的修改成员变量方法在这里无效,需要使用字符串拷贝函数,达到修改目的。
strcpy(stu1.name, "shuKui");
printf("stu1.name = %s\n",stu1.name);
printf("stu2.name = %s\n",stu2.name);
return 0;
}