C语言之struts结构体
来源:互联网 发布:お知らせいたします 编辑:程序博客网 时间:2024/05/21 21:44
C语言之struts结构体
文章链接:http://blog.csdn.net/qq_16628781/article/details/72419878
知识点
- strcut结构体的概念;
- strcut结构体的定义和使用方法;
- 新名词记录{strcut结构体指针;strcut结构体作为参数传递}
概述
总的来说:struct结构体用在C语言中的作用,类似于Java中的实体类。
我们知道int,char,float等为基本类型数据类型,具有不可再分的性质。而我们可以使用struct关键字定义相对复杂的数据类型,可以满足我们生产的需要。下面就来看下如何定义结构体和使用结构体。
定义和使用结构体
struct Book{ char title[50]; char author[50]; char subject[100]; int id;};//最后的分号必须要,才是一个完整的语句//使用struct Book book1, book2;//赋值操作book1 = {"C", "jack", "C programing", 1};book2 = {"C", "jack", "C programing", 2};//亦可以使用字符串操作方式来进行赋值strcpy(book2.title, "c++");//book2的title被替换
上面一种是正常的方式,Book想定义几个就几个,如果是下面一种那么就有一个了。
struct{ char title[50]; char author[50]; char subject[100]; int id;} book3;//该结构体没有name,最后只有一个book3实例
因为这个结构体没有名字,而是在最后面跟上一个book3实例,那么就可以根据book3来进行使用了。
//赋值strcpy(book3.title, "c programing");//使用,利用.来引用结构体里面的对象printf("book title is : %d\n", book3.title);
还有一个情况,我们能不能定义结构体数组呢?
如果可以,那么该如何来定义呢?
下面我们来看一下。
struct score { int math[3]; int english;{//定义一个结构体数组,大小为2struct score s1[2] = {{{80, 88, 90}, 100} ,{{55, 65, 68}, 89}};
可变长的结构体:这个说的是结构体里面有可以变长的数组。
typedef struct student { int age; char addr[0];//需要定义字符串大小为0};
注意:非弹性数组不能用”char a[]”这种形式定义弹性(flexible)变量,必须明确大小。
struct s { int a; char b[] ; };
顺序颠倒会让b和a数据重合,会在编译时不通过;
而char b[] = “hello”;形式在C和C++都不能编译通过;
结构体里面套用结构体
struct a{ struct b{ int c; } b1; struct b b2; } a1;
在上面的代码中,定义了一个a的结构体,并且有一个结构体变量a1,在a1中,有两个结构体变量b1和b2。可以这样使用
//赋值a1.b1.c = 1;a1.b2.c = 2;
结构体作为参数
结构体可以作为参数传递过去,例如要讲book类型作为参数传递给一个参数,类似于下面的样子:
struct Book{ char title[50]; char author[50]; char subject[100]; int id;};//最后的分号必须要,才是一个完整的语句/** * 结构作为参数 * * @param book */void printlBook(struct Book book){ printf("\n"); printf("printlBook()---->\n"); cout << "book.title:" << book.title << endl; cout << "book.subject:" << book.subject << endl; printf("book.subject:%s\n", book.subject); printf("book.id:%d\n", book.id);}//或者可以利用指针结构体/* 通过传 Book 的地址来输出 Book 信息 */void printBookByPointer(struct Books *book){} //实现和上面一样,只是访问结构体的方式变为:book -> title
注意:
1、struct结构体,在结构体定义的时候不能申请内存空间,不过如果是结构体变量,声明的时候就可以分配——两者关系就像C++的类与对象,对象才分配内存。
2、如果一个属性的实际大小大于定义的大小,那么就会覆盖后面的属性;例如一个字符串的长度大于了本来的字符串。
3、如果只是在结构体里面没有申明一个对象,那么此属性不占用大小。
4、结构体是可以派生的。
总结
结构体给我们提供了类似于“实体类”的一组相对复杂的数据结构,不在仅限于C语言给我们提供的基本的数据类型。上面说明了关于结构体定义的方法和使用,以及一些需要注意的问题。
结构体对于复杂的数据类型是很有用的,为此掌握好结构体对于我们编程有很大的帮助。
知识点理解理解有误,也有遗漏的知识点,望看官们能够指出,共同进步。
以上就是全部内容,如有任何疑问,请及时与我俩系。谢谢
- C语言之struts结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- C语言之结构体
- Object-C之Foundation框架中的结构体(Struts)
- C语言复习之结构体基础知识
- C语言复习之结构体基础知识
- C语言复习之结构体基础知识
- [一起学Hive]之五-Hive的视图和分区
- List接口
- struts2 标签(5)
- php curl模拟https请求
- linux搭建django运行环境
- C语言之struts结构体
- css清除浮动的五种常用方法
- php实现webhook自动部署代码
- git强制更新,放弃本地修改
- node.js利用captchapng模块实现图片验证码
- 用Python写自动化编译工具
- sublime text不支持gbk
- 如何生成HLS协议的M3U8文件
- bzoj 4878: [Lydsy2017年5月月赛]挑战NP-Hard dfs