const

const关键字与指针

ぐ巨炮叔叔 提交于 2020-03-03 20:58:31
const关键字与指针 1、const关键字,在C语言中用来修饰变量,表示这个变量是常量。 2、const修饰指针有4种形式, 第一种:const int *p1; //p本身不是const的,而p指向的变量是const的 *p1 = 3;//错误的,const变量不能修改 p1 = 3; //正确的 第二种:int const *p2; //p本身不是const的,而p指向的变量是const的 *p2 = 3;//错误的,const变量不能修改 p2 = 3; //正确的 第三种:int * const p3; //p本身是const的,而p指向的变量不是const的 *p3 = 3;//正确的 p3 = 3; //错误的,const变量不能修改 第四种:const int * const p4; //p本身是const的,而p指向的变量是const的 *p4 = 3;//正确的 p4 = 3; //正确的 3、关于指针变量的理解,主要是涉及到两个变量:第一个是指针变量p本身,第二个是p指向的那个变量。一个const 只能修饰其中一个变量。 4、const在实际使用过程中,并不是一定不能被修改,通过一些特定的方法(比如说是指针)也是可以被修改掉的。 只是大部分情况下,我们既然定义了const类型的变量,就不会去修改这个变量。所以指针使用的时候,一定要谨 慎

C# MODBUS协议上位机程序

核能气质少年 提交于 2020-03-03 17:25:10
C#写了一款上位机监控软件,基于MODBUS_RTU协议。 软件的基本结构: 采用定时器(Timer控件)为时间片。 串口采用serialPort1_DataReceived中断接收,并进行MODBUS格式判断。 把正确接收的数据取出,转换为有特定的结构体中。 数据通过时间片实时刷新。 MODBUS协议(这里不介绍了,网上有很多的权威资料)。   串口接收问题 这里采用的是MODBUS_RTU协议,是没有回车等明显的结束符的哈。所以在C#也不可以用serialPort1.ReadLine来读取。我用的是serialPort1.BytesToRead先读缓冲区中的数据个数,再通过个数据读数据。这样在用串口软件测试的时候确实很有用,再随之问题又出现了。下位机传上来的数据长度高出8个,就会分断接收。即接收到的两次的长度,第一次是8个,然后再接收到后面的。 原因是因为软件没有接收完一整帧数据后就进行了中断。解决方法:在中断中加入线程阻塞方法,然后再读取串口中的数据。   发送读数据和发送写数据的结构 写了多个MODBUS协议的上位机后,总结了些经验,并将这部分程序封装在一个类中。 使用时只需对其接口函数调用即可,有很强的移植性。在写软件时不用再在协议这部分花太多的时间。 基本的使用方法在注释中。程序总体感觉 可能过于臃肿,希望各位大神批评指点。 以下是源代码: 1 /* 2 *

Vue.js 路由

泪湿孤枕 提交于 2020-03-03 15:47:11
Vue.js 路由允许我们通过不同的 URL 访问不同的内容 Vue.js 路由需要载入 vue-router 库 安装,推荐使用淘宝镜像: cnpm install vue-router Vue.js + vue-router 可以很简单的实现单页应用 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>demo</title> </head> <body> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script> <div id="demo"> <h1>hello, cyy~</h1> <!-- 使用router-link来导航,to指定链接,默认会被渲染成a标签--> <router-link to="/about">about</router-link> <router-link to="/contact">contact</router-link> <hr> <!-- 路由出口,匹配到的组件将渲染在这里--> <router-view></router

moment.js获取本周上周本月本年的开始日期和结束日期

我怕爱的太早我们不能终老 提交于 2020-03-03 11:51:32
//获取本日 const startDate = moment().format('YYYY-MM-DD'); // 开始时间和结束时间都可以拼接 ' 00:00:00'和' 23:59:59'作为开始和结束的标志 const startDate = moment(nowDate).format("YYYY-MM-DD") + ' 00:00:00'; // 获取今日的开始时间 const endDate =moment(nowDate).format("YYYY-MM-DD") + ' 23:59:59'; // 获取今日的结束时间 //获取本周 const startDate = moment().week(moment().week()).startOf('week').format('YYYY-MM-DD'); //这样是年月日的格式 (开始时间是周日) const endDate = moment().week(moment().week()).endOf('week').valueOf(); //这样是时间戳的格式 (结束时间是周六) // 获取上周的开始时间和结束时间周一到周日 const weekOfday = moment().format('E');//计算今天是这周第几天 const startDate_monday = moment().subtract

FFT题集

无人久伴 提交于 2020-03-03 09:46:42
FFT学习参考这两篇博客,很详细,结合这看,互补。 博客一 博客二 很大一部分题目需要构造多项式相乘来进行计数问题。 1. HDU 1402 A * B Problem Plus 把A和B分别当作多项式的系数。 #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> using namespace std; const double PI = acos(-1.0); const int maxn = 5e4+50; struct Complex { double real,image; ///实部和虚部 Complex(double _real,double _image) { real = _real; image = _image; } Complex(){} }; Complex operator + (const Complex &c1,const Complex &c2) { return Complex(c1.real+c2.real,c1.image+c2.image); } Complex operator - (const Complex &c1,const Complex &c2) { return Complex(c1.real-c2.real,c1.image-c2

经典问题

拟墨画扇 提交于 2020-03-03 06:39:03
第一个问题 当程序存在多个对象的时候,如何确定这些对象的析构顺序? 单个对象创建时构造函数的调用顺序 调用父类的构造过程 调用成员变量的构造函数( 调用顺序与声明顺序相同 ) 调用类自身的构造函数 析构函数与对应构造函数的调用顺序相反 多个对象析构时 析构顺序与构造顺序相反,比如构造对象A,B,C,析构就是C,B,A 例子: # include <stdio.h> class Member { private : const char * ms ; public : Member ( const char * s ) { ms = s ; printf ( "Member %s create\n" , ms ) ; } ~ Member ( ) { printf ( "Member %s destroy\n" , ms ) ; } } ; class Test { private : Member mA ; Member mB ; public : Test ( ) : mB ( "mB" ) , mA ( "mA" ) { printf ( "Test()\n" ) ; } ~ Test ( ) { printf ( "~Test()\n" ) ; } } ; Member gA ( "gA" ) ; int main ( void ) { Test t ; return 0 ;

C++ Primer 学习笔记 第七章 类

依然范特西╮ 提交于 2020-03-03 05:59:05
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术,类的接口包括用户所能执行的操作,类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节,即类的用户只能使用接口而不能访问实现部分。 类要想实现数据抽象和封装,首先需要定义一个抽象数据类型,在抽象数据类型中,由类的设计者负责考虑类的实现过程,而使用该类的程序员只需要抽象地思考类型做了什么,而无须了解类型的工作细节。 我们可以通过抽象数据类型提供的接口来完成某些操作,但如果一个类没有任何接口供用户使用,只有一些数据成员,那这个类就不是抽象数据类型,一旦定义了一些成员函数供类的用户使用,它就变成了了抽象数据类型。 定义和声明成员函数的方式与普通函数差不多,成员函数的声明必须在类的内部,但它的定义既可以在类的内部,也可以在类的外部。定义在类内部的函数是隐式的inline函数。 Sales_data类: struct Sales_data { string isbn ( ) const { return bookNo ; } Sales_data & combine ( const Sales_data & ) ; double avg_price ( ) const ; string bookNo ; unsigned units

LOJ#2052. 「HNOI2016」矿区(平面图转对偶图)

两盒软妹~` 提交于 2020-03-03 05:57:56
题面 传送门 题解 总算会平面图转对偶图了…… 首先我们把无向边拆成两条单向边,这样的话每条边都属于一个面。然后把以每一个点为起点的边按极角排序,那么对于一条边 \((u,v)\) ,我们在所有以 \(v\) 为起点的边中找到 \((v,u)\) 的前缀,这条边就是 \((u,v)\) 的下一条边了。不断重复这个过程直到找到的区域封闭为止 建好对偶图之后,我们对于每一个点,算出这个点所代表的区域的面积。对于无界域(就是外围无限的那个面),它的面积会是一个负数。那么我们找到这个无界域代表的节点之后,以它为根,求出对偶图的一棵生成树,并记录一下子树里的矿区面积和以及矿区面积平方和 然后考虑询问,对于每一条出现的边,如果是非树边就忽略,否则如果这条边所在的面是它的反边所在的面的儿子,我们就加上这个子树的贡献。否则就减去反边所在的面的子树的贡献。这个画一画图应该就出来了 //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define pb push_back #define IT vector<Eg>::iterator #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int

最小公倍数

你。 提交于 2020-03-03 01:45:24
# include <iostream> using namespace std ; int gcd ( const int & a , const int & b ) { return a % b ? gcd ( b , a % b ) : b ; } int main ( ) { int A = 0 , B = 0 ; cin >> A >> B ; //除数不能为0 if ( A % B == 0 ) { if ( A >= B ) { cout << A << endl ; } else { cout << B << endl ; } return 0 ; } cout << ( A * B ) / gcd ( A , B ) ; return 0 ; } 来源: CSDN 作者: 辰星~ 链接: https://blog.csdn.net/weixin_45295598/article/details/104617678

Nodejs网络通讯

本小妞迷上赌 提交于 2020-03-03 00:55:43
Node.js 网络通信 Node 是一个面向网络而生的平台,它具有事件驱动、无阻塞、单线程等特性,具备良好的可伸缩性,使得它十分轻量,适合在分布式网络中扮演各种各样的角色。同时 Node 提供的 API 十分贴合网络,适合用它基础的 API 构建灵活的网络服务。本课程的内容就是给大家介绍 Node 在网络通信编程方面的具体能力。 利用 Node 可以十分方便的搭建网络服务器。在 Web 领域,大多数的编程语言需要专门的 Web 服务器作为容器,如 ASP、ASP.NET 需要 IIS 作为服务器,PHP 需要打在 Apache 或 Nginx 环境等,JSP 需要 Tomcat 服务器等。但对于 Node 而言,只需要几行代码即可构建服务器,无需额外的容器。 Node 提供了 net、dgram、http、https 这4个模块,分别用于处理 TCP、UDP、HTTP、HTTPS,适用于服务器端和客户端。 网络通信相关概念 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定