您的位置:首页 > 编程语言 > C语言/C++

C语言_结构体

2014-10-24 11:08 106 查看
结构体

一.1.结构体定义

结构体是一种自定义的数据类型
用struct关键字声明一个结构体

struct point {
// 结构体的成员
int x;
int y;

};


2.定义一个结构体变量
类型变量名初始值
需要注意struct+结构体的名字是变量类型
初始值的顺序与声明结构体内的成员顺序一致

struct point p1 = {3, 5};


3.结构体如何访问成员
引入一个新的操作符.
先找到结构体变量p1,再通过.操作符访问y的成员

p1.y = 50;
printf("%d\n", p1.x);


4.类型重定义

typedef int DT;
相当于给int起了一个别名叫DT, 但是原来的类型名也可以用
例一:

定义一个尺寸的结构体,把size结构体重新定义为Size
第一种方式

typedef struct size{
int width;
int height;
}MYSize;
第二种方式

struct size{
int width;
int height;
};
typedef struct size MYSize


例二:

定义一个结构体
struct soldier {
char name[20];
// 军衔
char rank[20];
// 血型
char bloodType[2];
};


把struct soldier类型重新定义成Sodier

typedef struct soldier Soldier;


定义四个结构体变量
Soldier s1 = {"项羽", "元帅", "B"};
Soldier s2 = {"关羽", "上将", "O"};
struct soldier s3 = {"张苞", "少校", "S"};
struct soldier s4 = {"弹头", "伙头兵", "AB"};


结构体可以直接赋值

Soldier s5 = s2;


结构体数组内存放的都是结构体变量

Soldier array[4] ={s1, s2, s3, s4};


通过结构体变量来找到血型的成员array[3].bloodType

1.先找到结构体变量 array[3]

2.通过.操作找到bloodType

array[3].bloodType;


array[3].name是什么----->name字符串的首地址

printf("%s\n",array[3].name);


如何修改name这个字符串-->改成XXX

strcpy(array[3].name, "张张张");
// array[3].name = "张张张"; 错误的 字符串的修改需要用字符串相关函数


定义一个打印一个结构体变量函数

// 从规范上来讲, 不应该省略函数声明
void printStruct(Soldier s);
void printStruct(Soldier s)
{
// 函数内可以直接访问形参的成员
printf("%s %s %s\n", s.name, s.rank, s.bloodType);
}


打印结构体数组的函数

void printArray(Soldier array[], int count);
void printArray(Soldier array[], int count)
{
for (int i = 0; i < count; i++) {
printStruct(array[i]);
}
}


调用打印结构体信息的函数

printStruct(array[3]);


调用打印结构体数组的函数

printArray(array, 4);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: