主要理解一下两点:

1.在C和C++中struct的常规使用。

2.在C++中struct和class基本一致,除了在访问控制权限方面,即:

    通过struct关键字实现的类,属性,函数默认的访问权限为public;
    通过class关键字实现的类,属性,函数默认的访问权限为private。

下面举例说明:

#include<iostream>
using namespace std; struct point{
int x;
int y;
int fun(point &p) //在C++中,完全可以在struct中使用函数
{
p.x = 100;
p.y = 200;
return 0;
}
point(int x, int y): x(x) , y(y){ } //等同于C++中的class
};
struct teacher{
int age;
char *name;
};
int main(void){
point p(0,0);
p.x = 1;
p.y = 2;
point p1= p;
cout<<"p1.x="<<p1.x<<endl;
cout<<"p1.y="<<p1.y<<endl; point *p3 = &p1;
p3->x = 10;
p3->y = 20;
cout<<"p3->x="<<p3->x<<endl;
cout<<"p3->y="<<p3->y<<endl; p3->fun(p1);
cout<<"p3->x="<<p3->x<<endl;
cout<<"p3->y="<<p3->y<<endl; point p4(1000,2000);
cout<<"p4.x="<<p4.x<<endl;
cout<<"p4.y="<<p4.y<<endl; cout<<"================struct在C中用法================"<<endl;
cout<<"before define struct teacher,sizeof(teacher)="<<sizeof(teacher)<<endl; struct teacher t1; //定义时比较繁琐,需要添加struct关键字,也可以使用typedef声明,此处就不需要加struct关键字。同样在C++中可以直接不加struct关键字 cout<<"after define struct teacher,sizeof(teacher)="<<sizeof(teacher)<<endl; t1.age = 30;
t1.name = "zhangsan";
cout<<"t1.age="<<t1.age<<endl;
cout<<"t1.name="<<t1.name<<endl; struct teacher *t2 = &t1;
t2->age = 35;
t2->name = "lisi";
cout<<"t2->age="<<t2->age<<endl;
cout<<"t2->name="<<t2->name<<endl; system("pause");
return 0;
}

  输出结果:

struct在C和C++中的使用总结的更多相关文章

  1. python struct.pack() 二进制文件,文件中打包二进制数据的存储与解析

    学习Python的过程中,遇到一个问题,在<Python学习手册>(也就是<learning python>)中,元组.文件及其他章节里,关于处理二进制文件里,有这么一段代码的 ...

  2. C语言 Struct 结构体在 Java 中的体现

    大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习. 和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东 ...

  3. java从c struct传来的字节数组中取值

    public int getInt(byte[] array,int index) { return (array[index]  & 0xff)  | (array[index + 1] & ...

  4. c++中的struct

    c++中的struct不在是c中的struct,不仅仅是一个多个数据类型的结构体了.c++中的struct可以具有成员函数(c语言中是不可以的),c++ struct还可以继承class等等.同时c+ ...

  5. python中struct模块及packet和unpacket

    转自:http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组 ...

  6. c#中struct和class的区别 z

    1.struct 是值类型,class是对象类型 2.struct 不能被继承,class可以被继承 3.struct 默认的访问权限是public,而class默认的访问权限是private. 4. ...

  7. c#中struct和class的区别

    1.struct 是值类型,class是对象类型 2.struct 不能被继承,class可以被继承 3.struct 默认的访问权限是public,而class默认的访问权限是private. 4. ...

  8. Ecto中的changeset,schema,struct,map

    概要 schema changeset struct map 总结 概要 Ecto 中, 对数据库的操作中经常用到 4 个类型: schema changeset struct map 在 Ecto ...

  9. Python的功能模块[1] -> struct -> struct 在网络编程中的使用

    struct模块 / struct Module 在网络编程中,利用 socket 进行通信时,常常会用到 struct 模块,在网络通信中,大多数传递的数据以二进制流(binary data)存在. ...

随机推荐

  1. DirectX10安装路径自动生成DXSDK_DIR

    DXSDK_DIR C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\

  2. C++ primer ch6 函数基础-1

    1.形参和实参:编译器并没有规定实参的求值顺序. 类似下面的代码,其行为是未定义的: ; printf("%d %d\n",++i,++i); 2.变量的初始化: 如果内置类型的变 ...

  3. Rocket MQ 问题排查命令

    修改rocketmq官方代码测试: package com.alibaba.middleware.race.rocketmq; import java.util.Scanner; import com ...

  4. MySQL查询优化(转)

    在分析性能欠佳的查询时,应考虑: 1) 应用程序是否正获取超过需要的数据,即访问了过多的行或列. 2) Mysql服务器是否分析了超过需要的行. 如果发现访问的数据行数很大,而生成的结果中数据行很少, ...

  5. Bash:精华

    # 声明索引数组(以从0开始的整数做索引的数组).以下三种等效. declare -a array declare array=(this is numeric array ) array=(this ...

  6. mac使用brew安装sshpass

    brew安装sshpass brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Form ...

  7. 5分钟K线图压力线买点怎么看?

    某开盘后底开一直呈现形成了一个长时间的箱体振荡的走势,K线在底位振荡时,其波动底点总是在不断抬高的话,这种走势说明有资金在场中积极运作,正是由于资金悄然建仓导致了底点慢慢抬高的走势,在底点不断抬高时, ...

  8. ArcGIS中的WKID(转)

    ArcGIS中的WKID link: https://www.cnblogs.com/liweis/p/5951032.html 提到坐标系统,大家多少能明白一些,但在运用时,有些朋友搞得不是非常清楚 ...

  9. spring boot 事务支持

  10. 解决C3P0在Linux下Failed to get local InetAddress for VMID问题

    解决C3P0在Linux下Failed to get local InetAddress for VMID问题 FailedtogetlocalInetAddressforVMID.Thisisunl ...