初学c/c++——定义结构体(struct)
2016-08-09 09:49
447 查看
假设,当我要输入大量的学生信息时,我定义或者不定义结构体都是一样的,但是,当我查询学生信息时,结构体的定义会让我方便很多。
struct list
{
int id;
char name[12];
char phone[12];
};
初始化:
list a=
{
201608,
“tuier”,
“12345”
};
或者
list a[2]=
{
{2016,”tuier”,”12345”},
{2017,”zhangsan”,”1234567”}
};
使用:
与基本的类型差不多,
list a;
list a;
list* a=&b;
void test(list a);
[b]访问:
格式为:
list.id=201607;
若是用p指针指向list的话:
则用 p->id 表示
或者
(*p).id (一般不用这种)
p[0].id
赋值:
a.id = 2016;
strcpy(a.name , “tuier”); (属于”string.h”库)
注意事项:
1) 结构体默认只支持=,不支持其他运算,加减乘除…
2) 可以把结构体的类型定义写在main()里,但是尽量不要,因为自定义结构体,目的还是想重复使用吧,写在函数内部无法重用。
3) c与c++是有区别的,在c中,定义变量时也要加struct,比如: struct list a;
知识点摘要:
1.结构体的大小,是有对齐问题的,为了实现对齐,编译器会对结构体进行填充(注意,c/c++标准里没有规定一定要对齐,是编译器的行为),我要提醒的是,结构体对齐是十分重要的机制,没有任何理由取消对齐。
2.结构体是可以作为别的结构体的成员定义的,只要前后顺序注意。
3.结构体作为参数时,尽量传引用,因为当结构体的体积较大时,占的内存空间较多,就不用传值了,较耗内存和CPU。
例子:
格式:struct list
{
int id;
char name[12];
char phone[12];
};
初始化:
list a=
{
201608,
“tuier”,
“12345”
};
或者
list a[2]=
{
{2016,”tuier”,”12345”},
{2017,”zhangsan”,”1234567”}
};
使用:
与基本的类型差不多,
list a;
list a;
list* a=&b;
void test(list a);
[b]访问:
格式为:
list.id=201607;
若是用p指针指向list的话:
则用 p->id 表示
或者
(*p).id (一般不用这种)
p[0].id
赋值:
a.id = 2016;
strcpy(a.name , “tuier”); (属于”string.h”库)
注意事项:
1) 结构体默认只支持=,不支持其他运算,加减乘除…
2) 可以把结构体的类型定义写在main()里,但是尽量不要,因为自定义结构体,目的还是想重复使用吧,写在函数内部无法重用。
3) c与c++是有区别的,在c中,定义变量时也要加struct,比如: struct list a;
知识点摘要:
1.结构体的大小,是有对齐问题的,为了实现对齐,编译器会对结构体进行填充(注意,c/c++标准里没有规定一定要对齐,是编译器的行为),我要提醒的是,结构体对齐是十分重要的机制,没有任何理由取消对齐。
2.结构体是可以作为别的结构体的成员定义的,只要前后顺序注意。
3.结构体作为参数时,尽量传引用,因为当结构体的体积较大时,占的内存空间较多,就不用传值了,较耗内存和CPU。
相关文章推荐
- opaque struct——c/c++如何隐藏内部结构体的定义?
- 【Struct(结构体)杂谈之二】名不正则言不顺,Struct(结构体)在C和C++中定义方式的区别
- C/C++ struct 结构体定义 用法详解
- 结构体定义 typedef struct 用法详解和用法小结
- [转载]结构体定义 typedef struct 用法详解和用法小结
- 在C中用struct实现C++中class的函数声明和定义
- C/C++中的结构体(struct)
- c/c++中结构体(struct)知识点强化,链表的学习
- 结构体定义 typedef struct 用法详解和用法小结
- C++中结构体的声明和定义
- 关于C/C++中 Class, Struct, enum的定义声明位置
- typedef struct和struct定义结构体的区别
- 战30天C++入门极限-C/C++中结构体(struct)知识点强化(2)
- 结构体的定义、访问以及C与C++中结构体的区别
- C/C++中结构体(struct)知识点强化
- typedef struct和struct定义结构体的区别
- 战30天C++入门极限-C/C++中结构体(struct)知识点强化(6)
- 战30天C++入门极限-C/C++中结构体(struct)知识点强化(5)
- C/C++中结构体(struct)知识点强化(二)
- Struct结构体是C/C++语言中用来自定义数据类型的