一般来说,定义结构体时会默认生成一个(不可见的)构造函数

struct Node{int node1;double node2;char node3;Node() {} //默认生成的构造函数
};
  • 它没有返回值,所以构造函数前没有返回值类型
  • 它没有参数,所以构造函数的小括号内为空
  • 它没有函数体,所以构造函数的花括号内为空

构造函数的函数名与结构体类型名相同,正是有这么一个构造函数存在,用户可以定义Node类型的变量时不初始化

Node one;
//对结构体中元素赋值
one.node1 = 0;
one.node2 = 0.0;
one.node3 = 'A';

如果想定义结构体变量时赋值,需要更改默认的构造函数

struct Node{int node1;double node2;char node3;//_node1, _node2, _node3都是变量名,换成a, b, c也可以,只要不冲突就行Node(int _node1, double _node2, char _node3) {node1 = _node1;node2 = _node2;node3 = _node3;}
};

这样就可以直接对结构体变量赋值

Node one = Node(0, 0.0, 'A');
//简化的构造函数写法
Node(int _node1, double _node2, char _node3): node1(_node1), node2(_node2), node3(_node3) {}

注意:如果自己定义了构造函数,默认的构造函数就被覆盖了,那么程序中不能不初始化就定义结构体变量
如果希望在程序中某些地方既可以定义时初始化,又能定义结构体时不初始化,需要再次加上默认的构造函数

#include <cstdio>struct Node{int node1;double node2;char node3;//默认的构造函数Node() {}//全部初始化Node(int _node1, double _node2, char _node3): node1(_node1), node2(_node2), node3(_node3) {}//仅对一部分初始化Node(int _node1):    node1(_node1) {}Node(double _node2): node2(_node2) {}Node(char _node3):   node3(_node3) {}Node(int _node1, char _node3): node1(_node1), node3(_node3) {}
};int main()
{Node one  = Node(0, 0.0, 'A');Node two  = Node(0, 'B');Node tree = Node('C');printf("%d %f %c\n", one.node1, one.node2, one.node3);printf("%d %c\n", two.node1, two.node3);printf("%c\n", tree.node3);return 0;
}

结构体赋值 -- 构造函数相关推荐

  1. 结构体复数相乘c语言,复数乘法中的结构体赋值实现代码

    复数乘法中的结构体赋值实现代码 废话不多说,直接上代码 复制代码 代码如下: #include using namespace std; typedef struct { double real; d ...

  2. golang怎么给空结构体赋值

    一.前言 最近没少使用golang,也没经过系统的学习,直接就上去开发了,遇到不少坑也学到不少东西,本次记录下给空结构体赋值的问题. 二.案例 1.结构体结构及错误 type Test struct ...

  3. C语言结构体赋值和有指针成员的结构体赋值

    1  结构体赋值 #include <windows.h>struct MyStruct {int a;int b;char c[20]; };int APIENTRY WinMain(H ...

  4. 【C语言】结构体赋值

    结构体在 C 程序中使用的较为频繁,能对数据有一定的封装的作用.对一个结构体赋值时,经常采用的方式是,分别对其成员变量赋值.那么能否将一个结构体用赋值号("=")直接赋值给另一个结 ...

  5. 1006.c++中结构体赋值碰到的bug

    在项目调试过程中,碰到 一个这样的问题,c++结构体赋值问题.在c语言中,一个结构体变量是可以赋值给另外一个结构体变量的.在c++情况有所变化,仅此记录一下. 此为一个概率事件. //定义接收数据数据 ...

  6. C99标准的结构体赋值注解

    关于结构体的赋值问题 #include <stdio.h>static struct id_mesg{char *name;unsigned int age;char *job; }; s ...

  7. 结构体赋值和指针赋值

    结论:结构体的赋值,修改新结构体的内容不会改变原来的那个结构体的值,而指针的赋值,再对指针内容修改则会改变指针指向的那个对象的值,因为指针的赋值其实是将地址传给另一个指针. 定义结构体: struct ...

  8. c语言结构体赋值时使用点号.

    最近发现一种比较方便的方式来对结构体进行赋值,那就是通过点号来赋值. 实例代码如下 struct { int a, b, c, d; }test={ .c = 3, .b = 2, .d = 4, . ...

  9. go 结构体赋值 invalid memory address or nil pointer dereference

    go 指针结构体赋值 1.前言 2.举例 3.分析 4.解决 1.前言 日常生产中,当我们使用go指针结构体赋值时,会报出invalid memory address or nil pointer d ...

  10. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

最新文章

  1. 《敏捷开发绩效管理》扩展阅读(敏捷开发绩效管理,敏捷团队绩效管理)
  2. QMainWindow多线程demo
  3. 直播 | LiveVideoStack Meet杭州:后直播时代技术
  4. Redis AOF 全持久化
  5. windows下ngnix+php配置
  6. 加大weblogic在Linux内存,在linux运行weblogic出现运行内存不足错误,求鞭挞....
  7. Consul服务治理原理简介及使用过程
  8. uniapp小程序的getsysteminfo_Typecho小程序:Pisces-Mini-Program
  9. MVVM下拉框绑定触发事件
  10. (6)DFS(深度优先搜索算法):n皇后问题
  11. python os.remove拒绝访问_「进阶Python」第八讲:代理模式
  12. Java StringBuilder
  13. 物联网大数据如何改善农业运营
  14. 【HTML+CSS】静态网页设计期末大作业——我的家乡无锡印象
  15. 【5G学习笔记-8】38.306 36.306 User Equipment (UE) radio access capabilities 以及终端CDRX能力上报 featureGroupIndic
  16. __stdcall调用约定
  17. android 360开机启动,手机360设置开机启动项
  18. java筆試題,Java筆試題附答案 | 學步園
  19. keil工程 freertos+emwin AC5编译器移植到AC6编译器
  20. 少吃调料竟然是错的!这9种调料原来是长寿高手

热门文章

  1. 如何将SL的image保存到SL的独立存储文件系统
  2. 微信公众号用到的网站
  3. 浏览器的工作原理:新式网络浏览器幕后揭秘(转)
  4. valgrind 报告 ecpg内存泄露 (二)
  5. 控制文件丢失的恢复(续)
  6. 【RAC】 RAC For W2K8R2 安装--创建ASM磁盘组(六)
  7. log4j.properties中log4j.rootLogger 与log4j.rootCategory 有什么区别 .
  8. 【Ubuntu^Java】Ubuntu下JDK环境变量的配置
  9. 数据访问组件SqlHelper
  10. 十二款世界顶级杀毒软件下载,有序列号