本人目前还是学生,能力有限,有不足或者错误的地方欢迎大家指正,谢谢大家!
1、cctype 中的函数
isalnum(c) 如果 c 是字母或数字,则为 True。
isalpha(c) 如果 c 是字母,则为 true。
iscntrl(c) 如果 c 是控制字符,则为 true
isdigit(c) 如果 c 是数字,则为 true。
isgraph(c) 如果 c 不是空格,但可打印,则为 true。
islower(c) 如果 c 是小写字母,则为 true。
isprint(c) 如果 c 是可打印的字符,则为 true。
ispunct(c) 如果 c 是标点符号,则 true。
isspace(c) 如果 c 是空白字符,则为 true。
isupper(c) 如果 c 是大写字母,则 true。
isxdigit(c) 如果是 c 十六进制数,则为 true。
tolower(c) 如果 c 大写字母,返回其小写字母形式,否则直接返回 c。
toupper(c) 如果 c 是小写字母,则返回其大写字母形式,否则直接返回 c。
2、指针地址
char *cp1 = "some value"; cp1=cp2;if (cp1 < cp2) 比较的是指针上存放的地址,并非他们指向的字符的值、
如果 cp1 和 cp2 指向同一数组中的元素(或该数组的溢出位置),上述表达式等效于比较在 cp1 和 cp2 中存放的地址;如果这两个指针指向不同的数组,则该表达式实现的比较没有定义。
3、字符串的比较
字符串的比较和比较结果的解释都须使用标准库函数 strcmp 进行:
const char *cp1 = "A string example";
const char *cp2 = "A different string";
int i = strcmp(cp1, cp2);
i = strcmp(cp2, cp1);
i = strcmp(cp1, cp1);
标准库函数 strcmp 有 3 种可能的返回值:若两个字符串相等,则返回 0值;若第一个字符串大于第二个字符串,则返回正数,否则返回负数。
4、字符串要以null结束
在使用处理 C 风格字符串的标准库函数时,牢记字符串必须以结束符 null结束:char ca[] = {'C', '+', '+'}; cout << strlen(ca) << endl;在这个例题中,ca 是一个没有 null 结束符
字符数组,则计算的结果不可预料。标准库函数 strlen 总是假定其参数字符串以 null 字符结束,当调用该标准库函数时,系统将会从实参 ca 指向的内存空间开始一直搜索结束
符,直到恰好遇到 null 为止。strlen 返回这一段内存空间中总共有多少个字符,无论如何这个数值不可能是正确使用C++标准库类型string,不会出现在字符串后面添加内容的问
题。
5、动态分配存储空间
C 语言程序使用一对标准库函数malloc 和 free 在自由存储区中分配存储空间,而 C++ 语言则使用 new 和delete 表达式实现相同的功能。
6、动态数组的定义
int *p=new int[10];在自由存储中创建的数组对象是没有名字的,只能通过其地址间接访问堆中的对象
string *psa = new string[10]; // array of 10 empty strings已经初始化
int *pia = new int[10]; // array of 10 uninitialized ints未初始化,可使用跟在数组长度后面的一对空圆括号,对数组元素做值初始化
int *pia2 = new int[10] (); 圆括号要求编译器对数组做值初始化,在本例中即把数组元素都设置为0。
对于动态分配的数组,其元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
const数组必须初始化const int *pci_ok = new const int[100]();//初始化全为零。 或者是类类型数组,默认的构造函数对其初始化
今天就到这里,有不足的地方还请指正,谢谢大家!