C语言之struts结构体
2017-05-17 18:15
197 查看
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; { //定义一个结构体数组,大小为2 struct 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语言之选择结构
- Objective-C语法之Objective-C语言和IOS系统(简介,语法,系统结构)
- Struts的概念及体系结构与工作原理-Java基础-Java-编程开发
- 理解C语言——从小菜到大神的晋级之路(3)——C源程序的基本结构与调试方法
- C语言之结构体和共同体——结构体的定义和使用
- c语言谭浩强课本第5章(选择结构程序设计)pps课件
- 转载——C语言中float,double类型,在内存中的结构(存储方式)
- C语言-结构体
- C语言实验——for循环打印图形(循环结构)
- 循环控制结构程序02 - 零基础入门学习C语言17
- C语言循环结构笔记
- 循环控制结构程序06 - 零基础入门学习C语言21
- C语言结构指针传递结构内容
- 黑马程序员-C语言-结构体
- struts2的struts.xml文件的元素结构
- C语言中float,double等类型,在内存中的结构
- 数据结构(严蔚敏)之一——顺序表之c语言实现
- C语言之结构体的初始化
- 二维、结构网格单相流SIMPLE 算法的C语言实现
- C语言中的结构