前两篇文章简单写了下c语言的基础数据类型,数组类型和指针,这篇文章要写下c语言中的自定义类型,也就是结构体。结构体我理解的是java中的bean实体类,但是要注意c语言中是没有类的概念的。
关键字,struct
struct Student
{
/**
* 结构体 默认的所有成员默认都是public的
*/
char * name;
int age;
char sex;
};
在main方法调用:
struct Student student; // 在栈中就定义了
student.name = "托尼";
student.age = 99;
student.sex = 'M';
printf("name:%s, age:%d, sex:%c \n", student.name, student.age, student.sex);
struct Worker
{
char * name;
int age;
char sex;
}s1, s2; // 可以定义s1 s2, 也可以不定义s1 s2
在main方法中这样调用:
s1.name = "钢铁侠";
s2.sex = 'M';
s1.age = 66;
printf("name:%s, age:%d, sex:%c \n", s1.name, s1.age, s2.sex);
结构体中引用别的结构体如下:
struct Student
{
/**
* 结构体 默认的所有成员默认都是public的
*/
char * name;
int age;
char sex;
};
struct Person
{
struct Student student;
char * name;
}sp;
在main方法这样调用:
sp.name = "人类";
sp.student.name = "帕克";
sp.student.sex = 'W';
sp.student.age = 98;
c中有个概念是共用体,即共享一块内存,
union MyUnion
{
short i;
int j;
};
int main() {
union MyUnion myUnion;
myUnion.i = 100;
printf("myunion的i=%d,地址是%#x\n",myUnion.i,&myUnion.i);
myUnion.j = 200;
printf("myunion的i=%d,地址是%#x\n",myUnion.i,&myUnion.i);
printf("myunion的j=%d,地址是%#x\n",myUnion.j,&myUnion.j);
return 0;
}
打印如下:
image.png
c语言其实有用的东西太多,但是我综合网上各种课程,书籍,其实之后要学习到的ndk开发,就先了解到这就足够用了,毕竟我们不是主要学习c语言开发的。
网友评论