C++中什么叫结构体?

作者&投稿:程爬 (若有异议请与网页底部的电邮联系)
c++中的结构体是用来干嘛的?能解决什么问题?~

  c++中的结构体只是为了兼容c而保留的,在C++里完全可以使用类来代替结构体。在类中使用结构体实际就是内部类的问题。把结构体看成一个没有成员函数的类。

  就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型。第二,相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。
  结构指针通过->符号来访问成员,下面我们就以上所说的看一个完整的例子:
  C++ 代码
  //程序作者:管宁
  //所有稿件均有版权,如要转载,请务必注明出处和作者
  #include
  #include
  using namespace std;
  struct test//定义一个名为test的结构体
  {
  int a;//定义结构体成员a
  int b;//定义结构体成员b
  };
  void main()
  {
  test pn1;//定义结构体变量pn1
  test pn2;//定义结构体变量pn2
  pn2.a=10;//通过成员操作符.给结构体变量pn2中的成员a赋值
  pn2.b=3;//通过成员操作符.给结构体变量pn2中的成员b赋值
  pn1=pn2;//把pn2中所有的成员值复制给具有相同结构的结构体变量pn1
  cout<<pn1.a<<"|"<<pn1.b<<endl;
  cout<<pn2.a<<"|"<<pn2.b<<endl;
  test *point;//定义结构指针
  point=&pn2;//指针指向结构体变量pn2的内存地址
  cout<<pn2.a<<"|"<<pn2.b<<endl;
  point->a=99;//通过结构指针修改结构体变量pn2成员a的值
  cout<<pn2.a<<"|"<<pn2.b<<endl;
  coutab<<endl;
  cin.get();
  }

C++允许在结构中定义函数,该函数称为成员函数。其描述形式如下:
struct 结构名{
数据成员
成员函数
}
下面是一个使用成员函数的例子
#include

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

struct Point
{
double m,n;
void Setab(double a,double b)
{
m=a;
n=b;
}

void display()
{
cout>" <<m<<""<<n<<endl;
}
};

int main(int argc, char** argv)
{
Point p;
p.Setab(2,3);
p.display();
cout <<"数据成员"<<p.m<<"" <<p.n <<endl;
return 0;
}

总结:
1、用到了结构块 结构块中的函数调用的方法,写完上面程序发现C++的结构块像Java中静态方法,直接用结构名调用数据成员和成员函数;还有一个就是“” 是制表符意思是横向跳到下一个制表符的位置,相当于键盘上的Tab键,“
”换行相当于endl;
2、在结构中成员默认都是public如不不希望对象直接访问数据成员,可以将数据成员使用private来修饰,即私有的数据成员,必须通过共有的成员函数才能使用,成为数据的封装性,下个小例子看看数据的封装性。

作者: 管宁 C++学习资源网
  什么是结构体?
  简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。
  定义结构体使用struct修饰符,例如:
  C++ 代码
  struct test
  {
  float a;
  int b;
  };
  
  上面的代码就定义了一个名为test的结构体,它的数据类型就是test,它包含两个成员a和b,成员a的数据类型为浮点型,成员b的数据类型为整型。
  由于结构体本身就是自定义的数据类型,定义结构体变量的方法和定义普通变量的方法一样。
  test pn1;
  这样就定义了一test结构体数据类型的结构体变量pn1,结构体成员的访问通过点操作符进行,
  pn1.a=10 就对结构体变量pn1的成员a进行了赋值操作,
  注意:结构体生命的时候本身不占用任何内存空间,只有当你用你定义的结构体类型定义结构体变量的时候计算机才会分配内存。
  结构体,同样是可以定义指针的,那么结构体指针就叫做结构指针。
  结构指针通过->符号来访问成员,下面我们就以上所说的看一个完整的例子:
  C++ 代码
  //程序作者:管宁
  //所有稿件均有版权,如要转载,请务必注明出处和作者
  #include<iostream>
  #include<string>
  usingnamespacestd;
  structtest//定义一个名为test的结构体
  {
  inta;//定义结构体成员a
  intb;//定义结构体成员b
  };
  voidmain()
  {
  testpn1;//定义结构体变量pn1
  testpn2;//定义结构体变量pn2
  pn2.a=10;//通过成员操作符.给结构体变量pn2中的成员a赋值
  pn2.b=3;//通过成员操作符.给结构体变量pn2中的成员b赋值
  pn1=pn2;//把pn2中所有的成员值复制给具有相同结构的结构体变量pn1
  cout<<pn1.a<<"|"<<pn1.b<<endl;
  cout<<pn2.a<<"|"<<pn2.b<<endl;
  test*point;//定义结构指针
  point=&pn2;//指针指向结构体变量pn2的内存地址
  cout<<pn2.a<<"|"<<pn2.b<<endl;
  point->a=99;//通过结构指针修改结构体变量pn2成员a的值
  cout<<pn2.a<<"|"<<pn2.b<<endl;
  cout<<point->a<<"|"<<point->b<<endl;
  cin.get();
  }
  
  总之,结构体可以描述数组不能够清晰描述的结构,它具有数组所不具备的一些功能特性。

结构体是一种自定义类型
你可以把它理解为基本数据类型的打包

有时为了需要操作逻辑上相互关联的数据,比如一学生,要定义他的姓名,性别,年龄,住址和家用电话等,这些信息都这个人相关联,这个时候就可以把这各种信息定义为一个struct。

当要操作多个同类型的数据时,比如刚才的例子,如果你要对一个班级里所有学生的信息进行记录,结构体的优点尤为凸显,使用struct不仅对数据更易维护和操作,逻辑也更加清晰。

和C++中的类一样的功能,不过他的成员函数和数据成员都是public属性,仅仅只是对C中的结构体功能进行了扩充!和数组根本没可比性,结构体也可以组成结构体数组。数组是针对具体实例来说的,结构体只是一种类型,数组有自己的物理空间,结构体是一种用户构造类型,物理上并不分配内存。只有用结构体定义了变量,就是对他实例化以后,才有自己的存储空间。总的来说结构体是类型,是抽象的!如果你能把他当作一种类型来看,相信你不会对他的用法再有模糊了。


c语言中数组和结构体有什么区别?
}std; \/\/ 结构体std的三个成员分别是int型、char型和float型,数据类型不同。2、调用时候的区别 数据是直接用形如“数组名[下标]”的方式调用,如a[3],表示数组a的第4个元素(数组下标从0开始);结构体是用结构体成员运算符来调用的,如:std.num,表示调用结构体std中的num变量。

共用体和结构体的区别
三、分配储存空间不同 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,简称结构。在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体来使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。结构体类型的定义只是由用户构造了一个结构体,但定义结构体类型...

请问下C语言中的结构体有什么用?
这就是结构体。例如:以学生为例,学生存在学号,姓名,性别,班级等。此时你可以顶一个结构体,将这些学生信息封装到一个结构体中。code如下:struct student{ int iID \/\/学生的学号 char sStuName[10] \/\/学生姓名 char sSex[10] \/\/学生性别 ...} ...

c语言中结构数组和结构体的区别?
1.代码参考:(边长可以是整数也可以是小数;实现乘法的运算符是*)2.代码参考:

什么是结构体类型?C语言中结构体类型占几个字节?
取结构体中最长的数据成员作为对齐原则。例如,结构体中最长为double,那么就是8个字节。struct student { int num;char sex;int age;} 例如上面的:num占4个字节。0,1,2,3这4个位置给num 然后char是1个字节对齐。所以 它从4开始存储。4这个位置给sex;然后age是int.它要4字节对齐。所以它要...

请问下C语言中的结构体有什么用
结构体作用:结构体和其他类型基础数据类型一样,只不过结构体可以做成你想要的数据类型。在实际项目中,结构体是大量存在的,研发人员常使用结构体来封装一些属性来组成新的类型,结构体在函数中最主要的作用就是封装,封装的便利是可以再次利用,再次使用的时候只要根据定义使用就可以,结构体可以定义一些...

c#语言中,结构体和类的区别?
15,结构变量会隐式的使用结构的无参数构造函数来初始化成员,这就意味语句 Struct S = new Struct()。16,当您将一个结构变量赋值给另一个,或者将结构实例传递到程序变量时,所有变量成员的值会复制到新的结构中。当您将一个对象变量赋值给另一个,或者将对象变量传递给程序时,则只是复制指针。...

C++类和结构体有什么区别?
一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。二、不同之处:结构...

C中结构体类型与共用体类型变量的不同点是什么
最大的区别是他们对内存的占用。结构体中的每个元素,都会按照数据类型的大小在内存中分配存储空间,结构体所占用的内存空间是其中所有元素所占用的内存空间的和,是一个固定的数值。共用体变量所占用的内存空间的大小是由所有元素中占用空间最大的元素决定的,他们共用这个空间。其次,结构体中的元素可以...

C语言中位域和结构体得区别是什么?
原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。 原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的...

开原市19427072888: 什么是C++中的结构体呢?
绽例伊痛: 结构体C++中的结构体编辑在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用

开原市19427072888: C++中什么叫结构体? -
绽例伊痛: 作者: 管宁 C++学习资源网 什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相...

开原市19427072888: C++中结构体介绍 -
绽例伊痛: 一、什么是结构体? 结构体是一种数据结构类型,它是一个或多个变量的集合,这些变量可能是不同类型的,程序为了处理方便将它们放在一起. 二、结构的说明 struct 名字 { 成员定义; }; struct 名字 变量; 例如: struct staff { char name[10]; ...

开原市19427072888: C++中什么叫结构体?
绽例伊痛: 结构体是一种自定义类型 你可以把它理解为基本数据类型的打包 有时为了需要操作逻辑上相互关联的数据,比如一学生,要定义他的姓名,性别,年龄,住址和家用电话等,这些信息都这个人相关联,这个时候就可以把这各种信息定义为一个struct. 当要操作多个同类型的数据时,比如刚才的例子,如果你要对一个班级里所有学生的信息进行记录,结构体的优点尤为凸显,使用struct不仅对数据更易维护和操作,逻辑也更加清晰.

开原市19427072888: c++中结构体是什么?有什么用? -
绽例伊痛: 在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用.在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型.在C语言中,结构体不能包含函数.在面向对象的程序设计中,对象具有状态(属性)和行为...

开原市19427072888: C++里面,结构体怎么解释啊、 -
绽例伊痛: C++里面的结构体与C中一样 和类差不多 就是成员变量默认的public 不像类默认是private

开原市19427072888: c语言什么叫结构体 -
绽例伊痛: 结构体定义 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构. 结构体作用 结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型.以方便日后的使用. ...

开原市19427072888: 怎么理解c++里结构体? -
绽例伊痛: 结构体只有数据成员,没有函数成员;结构体的成员在内存中连续存储;结构体长度等于所有成员长度之和;要特别注意内存对齐模式.

开原市19427072888: C语言里面结构体与共同体是啥意思?
绽例伊痛: 在C++中,考虑到C语言到C++语言过渡的连续性,对结构体进行了扩展,C++的结构体可以包含函数,这样,C++的结构体也具有类的功能,与class不同的是,结构体包含的函数默认为public,而不是private

开原市19427072888: C++的问题 什么叫做结构
绽例伊痛:C++中结构体的的慨念和使用方法 结构体 结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网