char

typedef用法剖析

夙愿已清 提交于 2020-03-23 07:20:08
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。 如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法? 使用 typedefs 为现有类型创建同义字。 定义易于记忆的类型名   typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如: typedef int size;   此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size: void measure(size * psz); size array[4]; size len = file.getlength(); std::vector <size> vs;   typedef 还可以掩饰符合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组: char line[81]; char text[81];

oracle常见日期函数

倾然丶 夕夏残阳落幕 提交于 2020-03-23 06:02:35
--常用日期函数 1、Sysdate 当前日期和时间 Select sysdate from dual; 2、Add_months(d,n) 当前日期d后推n个月 用于从一个日期值增加或减少一些月份 当前日期后两个月: Select add_months(sysdate,2) from dual; 当前日期前三个月: Select add_months(sysdate,-3) from dual; ADD_MONTHS是运算函数,函数将一个日期上加上一指定的月份数,所以,日期中的日是不变的。然而,如果开始日期是某月的最后一天,那么,结果将会调整以使返回值仍对应新的一月的最后一天。如果,结果月份的天数比开始月份的天数少,那么,也会向回调整以适应有效日期。 3、dbtimezone()返回时区 select dbtimezone from dual; 4,round[舍入到最接近的日期](day:舍入到最接近的星期日) select sysdate S1, round(sysdate) S2 , round(sysdate,'year') YEAR, round(sysdate,'month') MONTH , round(sysdate,'day') DAY fromdual 5、next_day( date, weekday )指定日期的下一个日期 语法 : next_day(

VS2013 MFC C++ CString ,const char , char, string 类型转换

巧了我就是萌 提交于 2020-03-23 01:05:48
VS2013 测试 以下测试加入头文件: # include <string> #include <cstdlib> using namespace std; //--------------------------------------------------------------------- //CString to char* CString myteststr=_T("1234"); const char *a = (const char *)myteststr.GetBuffer(); //获取CString类缓冲区指针 //string to char* string s1 = "abcdeg"; const char *k = s1.c_str(); const char *t = s1.data(); string str1 = "1234"; a = str1.c_str(); jssztest[0] = *a; jssztest[1] = *(++a); jssztest[2] = *(++a); jssztest[3] = *(++a); jssztest[4] = *(++a); jssztest[5] = *(++a); jssztest[6] = *(++a); jssztest[7] = *(++a); jssztest[8] = *(++a);

Java IO输入输出

安稳与你 提交于 2020-03-22 23:41:11
学前知道 Java的IO使用“ 流 ”的概念来表示。IO流涉及到 数据源和目的地 。流,是从源“流向”目的的数据流。 Java将各种 数据源 和 目标之间数据的传输 统一抽象为流,通过对 流对象 的操作来完成I/O功能。 输入输出实际都是对内存而言的。 数据源 可以是键盘、文件、应用程序、鼠标、网络连接。 数据目的地 可以是屏幕、文件、应用程序、网络连接。 无论数据从哪种数据源到哪种数据目的地,也无论数据是哪种类型, IO操作的基本方法是一样的 。 输入:创建一个输入流类对象,读数据,关闭流。 输出:创建一个输出流类对象,写数据,关闭流。 可以将 流 理解为连接数据源和目的的 管道 。 按照数据流的方向分为输入流和输出流。 按照流处理数据类型的不同分为字节流和字符流。 缓冲输入流BufferedInputStream和BufferedReader类添加了缓存功能,创建对象时即创建了一个内部缓冲区支持 mark 和 reset功能。 通过设置BufferedOutputStream和BufferedWriter输出流,应用程序可以将多个字节批量写入基本输出流中,而不必每个字节都调用底层的系统IO。(通俗点, 就是说,先放内存中,等达到一个设定值长度时输出 ) 缓冲流通常封装其它的基本流类,实现一次读写批量数据,从而提高了效率。( 这整段看到缓冲流时再看 )  ! 缓冲流为功能流

作业5-继承和派生

这一生的挚爱 提交于 2020-03-22 16:53:51
1.全面的MyString 输出: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 1 /*使程序输出指定结果*/ 2 #include <cstdlib> 3 #include <iostream> 4 using namespace std; 5 int strlen(const char * s) 6 { int i = 0; 7 for(; s[i]; ++i); 8 return i; 9 } 10 11 void strcpy(char * d,const char * s) 12 { 13 int i = 0; 14 for( i = 0; s[i]; ++i) 15 d[i] = s[i]; 16 d[i] = 0; 17 18 } 19 20 int strcmp(const char * s1,const char * s2) 21 { 22 for(int i = 0; s1[i] && s2[i] ; ++i) { 23 if( s1[i] < s2[i] ) 24

Java的基本数据类型

最后都变了- 提交于 2020-03-22 16:10:46
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。 byte: byte数据类型是8位、有符号的,以二进制补码表示的整数;(256个数字),占1字节 最小值是-128(-2^7); 最大值是127(2^7-1); 默认值是0; byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一; 例子:byte a = 100,byte b = -50。 short: short数据类型是16位、有符号的以二进制补码表示的整数,占2字节 最小值是-32768(-2^15); 最大值是32767(2^15 - 1); Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一; 默认值是0; 例子:short s = 1000,short r = -20000。 int: int数据类型是32位

初级扫雷小程序代码

拥有回忆 提交于 2020-03-22 12:08:52
#pragma once #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include <time.h> #define ROW 9 #define COL 9 #define Easy_count 80 #define ROWS ROW+2 #define COLS COL+2 void InitBoard(char Board[ROWS][COLS], int rows, int cols,char set); void Display(char Board[ROWS][COLS], int row, int col); void Setmine(char Board[ROWS][COLS], int row, int col); void findmine(char mine[ROWS][COLS], char show[ROWS][COLS],int row,int col); #include "game.h" void InitBoard(char Board[ROWS][COLS], int rows, int cols,char set) { int i, j; for (i = 0; i < rows; i++) { for (j = 0; j < cols;j++) {

基于51单片机的CAN通讯协议C语言程序

♀尐吖头ヾ 提交于 2020-03-22 09:39:21
//-----------------------函数声明,变量定义-------------------------------------------------------- #include <reg52.h> sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-------------------------------------------------------- #define SJA_BTR0 0x00 //该值需要用户根据实际需要的波特率进行计算 #define SJA_BTR1 0x16 //具体计算见文章说明 //-----------------------设置接收报文类型(标示符)-------------------------------------------------------- //该值需要用户根据实际需要重新配置 #define SJA_ACR 0x00 //验收代码寄存器的值 #define SJA_AMR 0x16 //验收屏蔽寄存器的值 //-------

字符流;字符输入流;字符输出流;字符流的拷贝;文件续写;字符高效输入缓冲流;字符高效输出缓冲流 (Java Day20)

♀尐吖头ヾ 提交于 2020-03-22 02:14:04
一,字符流 编码:把字符按照一定的方式转换为对应的数字,【就是把内存中的资源存放到磁盘文件的过程;磁盘文件中存放的都是数字【以字节的方式存储的】】 解码:把文件中的存储的数字按照一定的方式转换为对应的字符 编码使用的转换方式和解码使用的转换方式如果一致的看到的就是正常的内容 编码使用的转换方式和解码使用的转换方式如果不一致看到的就是非正常的内容【乱码】 使用字节流处理字符【字符串】的问题 使用字节流写字符【字符串】 可以使用,但是需要先把字符串【字符】转成字节数组,再存储到文件中,比较麻烦 ​ 字符--->字节数---->进行写出【写出到文件】 2. 使用字节流读取字符 如果是纯英文,可以一次读取一个字节或者读多个没有影响 如果是纯中文,可以一次读取两个字节(GBK)那就没有毛病,读取三个字节就会出 ​ 3. 现乱码的现象 如果是中英文混杂,每次不知道读取多少个字节,因此无论字节数组准备多大,都有可能会出现乱码【无法避免乱码的现象】导致字节流操作纯文本文件的时候会出现乱码的现象 代码示例 package com.ujiuye.demo; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Demo { public static void main

C-C++一些细节

与世无争的帅哥 提交于 2020-03-22 00:32:46
C++内存解析 一、内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。 但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。 二、三者之间的区别我们通过代码段来看看对这样的三部分内存需要怎样的操作和不同,以及应该注意怎样的地方。 例一:静态存储区与栈区 char* p = “Hello World1”; char a[] = “Hello World2”; p[2] = ‘A’; a[2] = ‘A’; char* p1 = “Hello World1”; 这个程序是有错误的,错误发生在p[2] = ‘A’这行代码处,为什么呢? 是变量p和变量数组a都存在于栈区的