char

深入探索C++对象模型(三)

断了今生、忘了曾经 提交于 2020-04-01 07:50:34
Data 语义学 一个class的data members,一般而言,可以表现这个class在程序执行时的某种状态。Nonstatic data members放置的是“个别的class object”感兴趣的数据,static data members则放置的是“整个class”感兴趣的数据。 C++对象模型尽量以空间优化和存取速度优化的考虑来表现nonstatic data members,并且保持和C语言struct数据配置的兼容性。它们把数据直接存放在每一个class object之中。对于继承而来的nonstatic data members(不管是virtual还是nonvirtual base class)也是如此。不过没有强制定义其间的排列顺序。 至于static data members,则被放置在程序的一个global data segment中,不会影响个别class object的大小。在程序之中,不管该class被产生出多少个objects(经由直接产生或间接派生),static data members永远只存在一份实例(甚至即使该class没有任何object实例,其static data members也已存在)。但是一个template class的static data members的行为稍有不同。 Data Member的绑定(The

winCE下Unicode编码

吃可爱长大的小学妹 提交于 2020-04-01 04:47:32
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

Unicode字符集

我们两清 提交于 2020-04-01 04:18:59
Unicode字符集的出现是为了弥补ASCII码只能表示128个字符的限制。在实际应用中,如若我们想显示汉字或日文等等,显然使用ASCII是不可能的。Unicode占用了两个字节,即16位,能表示的字符高达65536。即使像汉字这样庞大的语言,也不过3W左右的字符,所以Unicode足够应付。当然实际中可能很少用到这种字符集,咱们可以将其作为一项拓展知识面来了解下。 在C语言中,我们有如下定义:char c='A';变量c只需要一个字节来保存,并用十六进制数0x41来初始化,0x41是A的ASCII码。 我们也可以定义:char *p = “hello!”;因为windows是一个32位的操作系统,所以指针变量p需要四个字节来保存。当然,后面的字符串需要7个字节来保存。 宽字符 Unicode或者宽字符都没有改变char数据型态在C中的含义。char继续表示1个字节的储存空间,sizeof (char)继续返回1。理论上,C中1个字节可比8位长,但对我们大多数人来说,1个字节(也就是1个char)是8位宽。 C中的宽字符基于wchar_t数据型态,它在几个表头文件包括 WCHAR.H 中都有定义,像这样: typedef unsigned short wchar_t ; 因此,wchar_t数据型态与无符号短整数型态相同,都是16位宽。 要定义包含一个宽字符的变量,可使用下面的语句

JAVA提取字符串中的URL链接

亡梦爱人 提交于 2020-04-01 03:48:55
工具类 Patterns.java package com.util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Commonly used regular expression patterns. */ public class Patterns { /** * Regular expression to match all IANA top-level domains. * List accurate as of 2011/07/18. List taken from: * http://data.iana.org/TLD/tlds-alpha-by-domain.txt * This pattern is auto-generated by frameworks/ex/common/tools/make-iana-tld-pattern.py * * @deprecated Due to the recent profileration of gTLDs, this API is * expected to become out-of-date very quickly. Therefore it is now * deprecated. */ @Deprecated

2、指针的算术运算

筅森魡賤 提交于 2020-04-01 03:18:51
指针可以加上或减去一个整数。 指针的这种运算的意义和通常的数值的加减 运算的意义是不一样的 ,以单元为单位。 例如: 例二: char a[20]; int *ptr=(int *)a; // 强制类型转换并不会改变 a 的类型 ptr++; 在上例中,指针 ptr 的类型是 int*, 它指向的类型是 int ,它被初始化 为指向整型变量 a 。接下来的第 3 句中, 指针 ptr 被加了 1 ,编译器是这样 处理的:它把指针 ptr 的值加上了 sizeof(int) ,在 32 位程序中,是被加上 了 4 ,因为在 32 位程序中, int 占 4 个字节。 由于地址是用字节做单位的, 故 ptr 所指向的地址由原来的变量 a 的地址向高地址方向增加了 4 个字节。 由于 char 类型的长度是一个字节,所以,原来 ptr 是指向数组 a 的第 0 号 单元开始的四个字节,此时指向了数组 a 中从第 4 号单元开始的四个字节。 我们可以用一个指针和一个循环来遍历一个数组,看例子: 例三: int array[20]={0}; int *ptr=array; for(i=0;i<20;i++) { (*ptr)++; ptr++ ; } 这个例子将整型数组中各个单元的值加 1 。由于每次循环都将指针 ptr 加 1 个单元 ,所以每次循环都能访问数组的下一个单元。 再看例子:

25-字符串

≡放荡痞女 提交于 2020-04-01 02:05:30
字符串是位于双引号中的字符序列 在内存中以"\0"结束,所占字节比实际多一个 注意: (1)可以把一个字符常量赋给一个字符变量,但不能把字符串常量赋给字符变量 (2)C语言中没有字符串变量,可以 用字符数组来存放字符串 1、字符数组的概念   用来存放字符的数组称为字符数组。 2、字符数组定义   形式和前边介绍的数值数组相同    char 数组名[常量表达式] 例如:char ch[5];   字符数组也可以是二维或多维数组。    char 数组名[常量表达式1][常量表达式2];   例如:char ch[2][5]; 即为二维字符数组。 注意:定义字符数组时,应确保数组长度比字符串长度至少多1 3、字符数组初始化 字符数组也允许在定义时作初始化赋值 char ch[4] = {'a', ' ', 'o'}; 赋值后各元素的值为: ch[0] = 'a'; ch[1] = ' '; ch[1] = 'o'; 其中ch[3]未赋值,系统自动赋值为0。 当对全体元素赋初值的时候也可以省去长度说明。例如:   char ch[] = {'f', 'A', ' '}; 这时数组长度自动定为3。 注意:未被使用的元素均被自动初始化为0 4、字符数组的引用   字符数组和普通数组一样,也是通过下标引用。 5、字符串和字符串结束标志   在C语言中没有专门的字符串变量

java 期末考试复习

纵然是瞬间 提交于 2020-04-01 01:51:31
//Scanner这样写? Scanner input = new Scanner(System. in ); /*--> */ /*--> */ //不断获得下一个单词 names[ i] = toTitleCase( input.next()); inheritance • Constructors are inherited, but use super() public class Parent { public Parent() { do some code; } } public class Child extends Parent { public Child() { super(); // call Parent() do some more code; } } so in a main method: Child c = new Child(); // Calls Parent(), too Default constructor == no parameters 第72页,子类能加新方法吗? 只有public方法的可以override,别的几个关键字都不行 exam1: //yuec2 yue cheng package exam1; //import java.io.File; import java.io.FileNotFoundException;

C语言字符串函数大全

时间秒杀一切 提交于 2020-03-31 18:55:35
C语言字符串函数大全 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法 : char *stpcpy(char *destin, char *source); 程序例 : #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; stpcpy(string, str1); printf("%s\n", string); return 0; } 函数名 : strcat 功 能 : 字符串拼接函数 用 法 : char *strcat(char *destin, char *source); 程序例 : #include <string.h> #include <stdio.h> int main(void) { char destination[25]; char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(destination, Borland); strcat(destination, blank); strcat(destination, c); printf("%s\n", destination); return 0; } 函数名 : strchr 功

C 指针精要

∥☆過路亽.° 提交于 2020-03-31 13:29:15
C 指针精要 http://blog.csdn.net/lwbeyond/article/details/6180640 一. 解读复杂指针声明 要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样. 记住原则: 从变量名处起,根据运算符优先级结合,一步一步分析. int p; /* 这是一个普通的整型变量 */ int *p; /* 首先从P 处开始,先与*结合,所以说明P 是一个指针, 然后再与int 结合,说明指针所指向的内容的类型为int 型. 所以P 是一个返回整型数据的指针 */ int p[3]; /* 首先从P 处开始,先与[]结合,说明P 是一个数组, 然后与int 结合,说明数组里的元素是整型的. 所以P 是一个由整型数据组成的数组 */ int *p[3]; /* 首先从P 处开始,先与[]结合,因为其优先级比*高,所以P 是一个数组, 然后再与*结合,说明数组里的元素是指针类型, 然后再与int 结合,说明指针所指向的内容的类型是整型的 所以P 是一个由返回整型数据的指针所组成的数组 */ int (*p)[3]; /* 首先从P 处开始,先与*结合,说明P 是一个指针 然后再与[]结合,说明指针所指向的内容是一个数组 然后再与int 结合,说明数组里的元素是整型的. 所以P

嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

女生的网名这么多〃 提交于 2020-03-31 13:16:08
const:变量,只读【不能变】 内存属性: 1. 内存操作的大小 2.内存的变化性,可写可读 char *p; const char *p; 描述字符串,p指向的内容是只读的,不可再次修改 char const *p; char * const p; 硬件资源的定义 char *p const; const char *const p; 举个例子: 虽然在定义指针p的过程中,前面没有写const,但是默认了他是只读属性,不能对访问内容修改 这个segmentation fault就是非法访问报错的! 正确写法: 2. volatile 主要应用于硬件中 防止优化指向内存地址 char *p; volatile char *p; 3. typedef 别名 什么类型 变量名称; xxx a; char *name_t; // name_t 是一个指针,指向了一个char类型的内存 typedef char * name_t; //name_t是一个指针类型的名称,指向了一个char类型的内存 来源: https://www.cnblogs.com/ivyharding/p/11146915.html