struct type_name {member_type1 member_name1;member_type2 member_name2;member_type3 member_name3;..} object_names;@H_403_8@ @H_403_8@type_name 是结构体类型的名称,member_type1 member_name1 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。 @H_403_8@ @H_403_8@比如:
struct Books{ char Title[50]; char author[50]; char subject[100]; int book_ID;} book;@H_403_8@ @H_403_8@ 二、访问结构成员 成员访问运算符(.)
#include <iostream>#include <cstring> using namespace std; // 声明一个结构体类型 Books struct Books{ char Title[50]; char author[50]; char subject[100]; int book_ID;}; int main( ){ Books Book1; // 定义结构体类型 Books 的变量 Book1 Books Book2; // 定义结构体类型 Books 的变量 Book2 // Book1 详述 strcpy( Book1.Title,"C++ 教程"); strcpy( Book1.author,"Runoob"); strcpy( Book1.subject,"编程语言"); Book1.book_ID = 12345; // Book2 详述 strcpy( Book2.Title,"CSS 教程"); strcpy( Book2.author,"Runoob"); strcpy( Book2.subject,"前端技术"); Book2.book_ID = 12346; // 输出 Book1 信息 cout << "第一本书标题 : " << Book1.Title <<endl; cout << "第一本书作者 : " << Book1.author <<endl; cout << "第一本书类目 : " << Book1.subject <<endl; cout << "第一本书 ID : " << Book1.book_ID <<endl; // 输出 Book2 信息 cout << "第二本书标题 : " << Book2.Title <<endl; cout << "第二本书作者 : " << Book2.author <<endl; cout << "第二本书类目 : " << Book2.subject <<endl; cout << "第二本书 ID : " << Book2.book_ID <<endl; return 0;}@H_403_8@实例中定义了结构体类似 Books 及其两个变量 Book1 和 Book2 @H_403_8@结果:
第一本书标题 : C++ 教程第一本书作者 : Runoob第一本书类目 : 编程语言第一本书 ID : 12345第二本书标题 : CSS 教程第二本书作者 : Runoob第二本书类目 : 前端技术第二本书 ID : 12346@H_403_8@ @H_403_8@ @H_403_8@ 三、结构作为函数参数 @H_403_8@传参方式与其他类型的变量或指针类似
#include <iostream>#include <cstring> using namespace std;voID printBook( struct Books book ); // 声明一个结构体类型 Books struct Books{ char Title[50]; char author[50]; char subject[100]; int book_ID;}; int main( ){ Books Book1; // 定义结构体类型 Books 的变量 Book1 Books Book2; // 定义结构体类型 Books 的变量 Book2 // Book1 详述 strcpy( Book1.Title,"前端技术"); Book2.book_ID = 12346; // 输出 Book1 信息 printBook( Book1 ); // 输出 Book2 信息 printBook( Book2 ); return 0;}voID printBook( struct Books book ){ cout << "书标题 : " << book.Title <<endl; cout << "书作者 : " << book.author <<endl; cout << "书类目 : " << book.subject <<endl; cout << "书 ID : " << book.book_ID <<endl;}@H_403_8@ @H_403_8@结果:
书标题 : C++ 教程书作者 : Runoob书类目 : 编程语言书 ID : 12345书标题 : CSS 教程书作者 : Runoob书类目 : 前端技术书 ID : 12346@H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 四、指向结构的指针 @H_403_8@ @H_403_8@ @H_403_8@
#include <iostream>#include <cstring> using namespace std;voID printBook( struct Books *book ); struct Books{ char Title[50]; char author[50]; char subject[100]; int book_ID;}; int main( ){ Books Book1; // 定义结构体类型 Books 的变量 Book1 Books Book2; // 定义结构体类型 Books 的变量 Book2 // Book1 详述 strcpy( Book1.Title,"前端技术"); Book2.book_ID = 12346; // 通过传 Book1 的地址来输出 Book1 信息 printBook( &Book1 ); // 通过传 Book2 的地址来输出 Book2 信息 printBook( &Book2 ); return 0;}// 该函数以结构指针作为参数voID printBook( struct Books *book ){ cout << "书标题 : " << book->Title <<endl; cout << "书作者 : " << book->author <<endl; cout << "书类目 : " << book->subject <<endl; cout << "书 ID : " << book->book_ID <<endl;}@H_403_8@ @H_403_8@ 结果:
书标题 : C++ 教程书作者 : Runoob书类目 : 编程语言书 ID : 12345书标题 : CSS 教程书作者 : Runoob书类目 : 前端技术书 ID : 12346@H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 五、typedef 关键字 @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 补充: @H_403_8@1.类与结构体的区别,除此这外无任何区别。 (1)class 中默认的成员访问权限是 private 的,而 struct 中则是 public 的。 (2)从 class 继承默认是 private 继承,而从 struct 继承默认是 public 继承。 (3)class 可以定义模板,而 struct 不可以。 @H_403_8@更多内容参考:结构体变量和结构体类型的定义 @H_403_8@ @H_403_8@ @H_403_8@2. @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 3. @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@@H_404_727@4. . 与 -> 运算符 @H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 5.可以将结构作为函数的返回值
#include <stdio.h>#include <stdlib.h>struct test{ int i; char c; double d; float f;};struct test set( int a,float b,char c,double d ){ struct test t; t.i = a; t.f = b; t.c = c; t.d = d; return t;}voID sig( int s );voID print(struct test t2){ printf("int:%d\n",t2.i); printf("char:%c\n",t2.c); printf("float:%f\n",t2.f); printf("double:%lf\n",t2.d);}voID sig( int s ){ printf("捕获信号%d,跳出……",s); exit(1);}int main( voID ){ struct test info; info = set(2,3.22,‘d‘,4.335); print(info); return 0;}总结
以上是内存溢出为你收集整理的c++ 结构全部内容,希望文章能够帮你解决c++ 结构所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)