结构体赋值 -- 构造函数
一般来说,定义结构体时会默认生成一个(不可见的)构造函数
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;
}
结构体赋值 -- 构造函数相关推荐
- 结构体复数相乘c语言,复数乘法中的结构体赋值实现代码
复数乘法中的结构体赋值实现代码 废话不多说,直接上代码 复制代码 代码如下: #include using namespace std; typedef struct { double real; d ...
- golang怎么给空结构体赋值
一.前言 最近没少使用golang,也没经过系统的学习,直接就上去开发了,遇到不少坑也学到不少东西,本次记录下给空结构体赋值的问题. 二.案例 1.结构体结构及错误 type Test struct ...
- C语言结构体赋值和有指针成员的结构体赋值
1 结构体赋值 #include <windows.h>struct MyStruct {int a;int b;char c[20]; };int APIENTRY WinMain(H ...
- 【C语言】结构体赋值
结构体在 C 程序中使用的较为频繁,能对数据有一定的封装的作用.对一个结构体赋值时,经常采用的方式是,分别对其成员变量赋值.那么能否将一个结构体用赋值号("=")直接赋值给另一个结 ...
- 1006.c++中结构体赋值碰到的bug
在项目调试过程中,碰到 一个这样的问题,c++结构体赋值问题.在c语言中,一个结构体变量是可以赋值给另外一个结构体变量的.在c++情况有所变化,仅此记录一下. 此为一个概率事件. //定义接收数据数据 ...
- C99标准的结构体赋值注解
关于结构体的赋值问题 #include <stdio.h>static struct id_mesg{char *name;unsigned int age;char *job; }; s ...
- 结构体赋值和指针赋值
结论:结构体的赋值,修改新结构体的内容不会改变原来的那个结构体的值,而指针的赋值,再对指针内容修改则会改变指针指向的那个对象的值,因为指针的赋值其实是将地址传给另一个指针. 定义结构体: struct ...
- c语言结构体赋值时使用点号.
最近发现一种比较方便的方式来对结构体进行赋值,那就是通过点号来赋值. 实例代码如下 struct { int a, b, c, d; }test={ .c = 3, .b = 2, .d = 4, . ...
- go 结构体赋值 invalid memory address or nil pointer dereference
go 指针结构体赋值 1.前言 2.举例 3.分析 4.解决 1.前言 日常生产中,当我们使用go指针结构体赋值时,会报出invalid memory address or nil pointer d ...
- c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事
一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...
最新文章
- 《敏捷开发绩效管理》扩展阅读(敏捷开发绩效管理,敏捷团队绩效管理)
- QMainWindow多线程demo
- 直播 | LiveVideoStack Meet杭州:后直播时代技术
- Redis AOF 全持久化
- windows下ngnix+php配置
- 加大weblogic在Linux内存,在linux运行weblogic出现运行内存不足错误,求鞭挞....
- Consul服务治理原理简介及使用过程
- uniapp小程序的getsysteminfo_Typecho小程序:Pisces-Mini-Program
- MVVM下拉框绑定触发事件
- (6)DFS(深度优先搜索算法):n皇后问题
- python os.remove拒绝访问_「进阶Python」第八讲:代理模式
- Java StringBuilder
- 物联网大数据如何改善农业运营
- 【HTML+CSS】静态网页设计期末大作业——我的家乡无锡印象
- 【5G学习笔记-8】38.306 36.306 User Equipment (UE) radio access capabilities 以及终端CDRX能力上报 featureGroupIndic
- __stdcall调用约定
- android 360开机启动,手机360设置开机启动项
- java筆試題,Java筆試題附答案 | 學步園
- keil工程 freertos+emwin AC5编译器移植到AC6编译器
- 少吃调料竟然是错的!这9种调料原来是长寿高手
热门文章
- 如何将SL的image保存到SL的独立存储文件系统
- 微信公众号用到的网站
- 浏览器的工作原理:新式网络浏览器幕后揭秘(转)
- valgrind 报告 ecpg内存泄露 (二)
- 控制文件丢失的恢复(续)
- 【RAC】 RAC For W2K8R2 安装--创建ASM磁盘组(六)
- log4j.properties中log4j.rootLogger 与log4j.rootCategory 有什么区别 .
- 【Ubuntu^Java】Ubuntu下JDK环境变量的配置
- 数据访问组件SqlHelper
- 十二款世界顶级杀毒软件下载,有序列号