接续上篇[C语言基础及指针⑥字符操作](http://www.jianshu.com/p/b7e6fc094087)
如果说类是java中结构化数据类型的核心 , 那么结构体就是C语言中结构化数据类型的核心 。在java中我们常有这样的写法:
```java
public class Product {
private String name ;
private String desc ;
// get set ...
}
```
这种常见的javabean的写法 , 在C语言中可以用结构体来表示 , 关键字`struct`:
```c
struct Product {
char* productName;
char* productDesc;
};
```
在学习C语言的结构体的时候 , 我们可以类比成java中的类 , 只是这个类比较特殊,结构体中只有声明 , 函数没有实现 , 属性也不能初始化 , 一般定义在头文件中 。就好比声明了一个抽象类 , 里面什么动作也不做 , 属性只是声明一样 , 都需要继承或是外部去赋值 。
### 结构体的简单使用:
```c
// 定义一个结构体
// 一个结构体相当于一个java中的类 , 结构体中只有声明 , 函数没有实现 , 属性也不能初始化 , 一般定义在头文件中
struct Person
{
char* name;
int age;
};
struct News {
// 使用字符数组 , 在赋值的时候和字符指针略有不同
char title[128];
char* content;
};
/*简单使用结构体*/
void makeSimpleStruct() {
// 使用结构体 , 使用字面量的形式创建一个结构体
struct Person person = { "zeno",21 };
// 打印
printf("输出:姓名 - %s ; 年龄 - %d\n", person.name, person.age);
//另一种创建结构体的方式
struct Person person2;
person2.name = "非我";
person2.age = 23;
printf("\n输出:姓名 - %s ; 年龄 - %d\n", person2.name, person2.age);
struct News news;
//news.title 是字符数组 , 不能直接 news.title = "xxx" , 需要使用strcpy()函数
strcpy(news.title, "我是新闻标题");
news.content = " 我是新闻正文";
printf("\n\n输出:\n标题 \n %s \n正文:\n %s\n", news.title, news.content);
}
```
> 友情提示:
1.结构体的两种创建方式,①通过字面量的方式创建 。② 通过定义结构体变量然后给成员赋值 , 类似对象给成员属性赋值。
2.字符数组的赋值,不能直接`="x