《C和指针》学习笔记五/数组、字符串字符和字节/
2012-08-18 14:51
302 查看
数组名的值是指向数组第一个元素的指针。但有两个例外。sizeof返回整个数组所占用的字节而不是一个指针所占用的字节。单目操作符&返回一个指向数组色指针,而不是一个指向数组第一个元素的指针的指针。
C的下标引用和间接访问表达式是一样的。
声明数组参数其实是一个指针。
字符数组的初始化
char message1[ ]="hello";初始化一个字符数组的元素,等价于char message1[ ]={'h','e','l','l','o',0};
char *message2 ="hello";是一个真正的字符串常量,这个指针变量被初始化为指向这个字符串常量的存储
位置。
指向数组的指针
比如 int (*p)[10]; 这是的p是一个指向整型数组的指针。
指针数组
如果一个数组,其元素均为指针类型数据,该数组称为指针数组。
一维指针数组的定义形式为 类型名 *数组名[数组长度] 如 int *p[4];
注意指向数组的指针与指针数组的区别。只要记住下标引用的优先级高于间接访问。
const和指针
1、const在前面
const int nVlaue; //nVlaue 是const
const char *pContent;//*pContent是const,pContent可变
const (char*) pContent;//pContent是const,*pContent可变
char* const pContent;//pContent是const,*pContent可变
const char* const pContent; //pContent和*pContent都是const
2、const 在后面,与上面的声明对等
int const nValue;//nValue是const
char const *pContent;//*pContent是const,pContent可变
(char*)const pContent;//pContent是const,*pContent可变
char* const pContent;//pContent是const,*pContent可变
char const* const pContent;//pContent和*pContent都是const
判断原则:
沿着*号划一条线,如果const位于*号左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*号的右侧,const就是修饰指针本身,即指针本身是常量。另需注意 对于const(char*);因为char*是一个整体,相当于一个类型,因此,这个限定指针是const。
当一个多维数组名作为参数传递给一个函数时,它所对应的函数形参的声明中必须显式指明第2维(和接下去所有维)的长度。
在多维数组的初始值列表中使用完整的多层花括号能提高可读性。
头文件string.h包含了使用字符串函数所需的原型和声明。
不受限制的字符串函数
字符串长短 strlen
复制字符串 strcpy
连接字符串 strcat
字符串比较 strcmp
strcpy 和strcat函数都返回它们第一个参数的一份拷贝,就是一个指向目标字符数组的指针。
字符串必须以NUL字节结尾。
查找一个字符
在一个字符串中查找一个特定字符最容易的方法是使用strchr和strrchr函数。
查找任何几个字符 使用strpbrk函数
查找一个子串,使用strstr函数
查找一个字符串前缀
strspn和strcspn函数用于在字符串的起始位置对字符计数
查找标记 使用strtok函数实现,当strtok函数执行任务时,它将会修改它所处理的字符串。
字符转换
toupper函数返回其参数的对应大写形式,tolower函数返回其参数的对应小写形式。
内存操作
这些函数能够处理任意的字节序列(包括含有NUL的字节序列)
memcpy函数、memmove函数 、memcmp函数 、 memchr函数、 memset函数。
C的下标引用和间接访问表达式是一样的。
声明数组参数其实是一个指针。
字符数组的初始化
char message1[ ]="hello";初始化一个字符数组的元素,等价于char message1[ ]={'h','e','l','l','o',0};
char *message2 ="hello";是一个真正的字符串常量,这个指针变量被初始化为指向这个字符串常量的存储
位置。
指向数组的指针
比如 int (*p)[10]; 这是的p是一个指向整型数组的指针。
指针数组
如果一个数组,其元素均为指针类型数据,该数组称为指针数组。
一维指针数组的定义形式为 类型名 *数组名[数组长度] 如 int *p[4];
注意指向数组的指针与指针数组的区别。只要记住下标引用的优先级高于间接访问。
const和指针
1、const在前面
const int nVlaue; //nVlaue 是const
const char *pContent;//*pContent是const,pContent可变
const (char*) pContent;//pContent是const,*pContent可变
char* const pContent;//pContent是const,*pContent可变
const char* const pContent; //pContent和*pContent都是const
2、const 在后面,与上面的声明对等
int const nValue;//nValue是const
char const *pContent;//*pContent是const,pContent可变
(char*)const pContent;//pContent是const,*pContent可变
char* const pContent;//pContent是const,*pContent可变
char const* const pContent;//pContent和*pContent都是const
判断原则:
沿着*号划一条线,如果const位于*号左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*号的右侧,const就是修饰指针本身,即指针本身是常量。另需注意 对于const(char*);因为char*是一个整体,相当于一个类型,因此,这个限定指针是const。
当一个多维数组名作为参数传递给一个函数时,它所对应的函数形参的声明中必须显式指明第2维(和接下去所有维)的长度。
在多维数组的初始值列表中使用完整的多层花括号能提高可读性。
头文件string.h包含了使用字符串函数所需的原型和声明。
不受限制的字符串函数
字符串长短 strlen
复制字符串 strcpy
连接字符串 strcat
字符串比较 strcmp
strcpy 和strcat函数都返回它们第一个参数的一份拷贝,就是一个指向目标字符数组的指针。
字符串必须以NUL字节结尾。
查找一个字符
在一个字符串中查找一个特定字符最容易的方法是使用strchr和strrchr函数。
查找任何几个字符 使用strpbrk函数
查找一个子串,使用strstr函数
查找一个字符串前缀
strspn和strcspn函数用于在字符串的起始位置对字符计数
查找标记 使用strtok函数实现,当strtok函数执行任务时,它将会修改它所处理的字符串。
字符转换
toupper函数返回其参数的对应大写形式,tolower函数返回其参数的对应小写形式。
内存操作
这些函数能够处理任意的字节序列(包括含有NUL的字节序列)
memcpy函数、memmove函数 、memcmp函数 、 memchr函数、 memset函数。
相关文章推荐
- 【C】【笔记】《C和指针》 第六章 指针 第七章 函数 第八章 数组 第九章 字符串、字符和字节
- 黑马程序员:字符数组,字节数组,字符串的流对象
- 《C和指针》第九章 字符串、字符和字节
- IP字符串转换成4字节无符号字符数组[转]
- 黑马程序员:字符数组,字节数组,字符串的流对象
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 主题:Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- jquery 多维数组实现PHP的count、in_array(不区分大小写),utf8字符串(包含中文,中文字符2个字节)字节统计
- 《c和指针》3.1.3 二 、字符串常量 :不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组赋值
- 黑马程序员:字符数组,字节数组,字符串的流对象
- 在String()方法中,将字符数组和字节数组复制给字符串。(字符数组实例化)
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 管道流PipedInputStream,PipedInputStream、操作(字节数组,字符数组,字符串)流
- 字节数组与字符串(字符数组)的转换操作
- String中空串与null的区别#抽取方法快捷键#字节数组转化成字符串#字符数组转化成字符串
- 《C和指针》 读书笔记 -- 第9章 字符串、字符和字节
- 字节数组 整型 字符串 十六进制 字符 之间的转换
- 字符串逆序,字符串转为字符数组 、字符串转字节数组,字节数组转字符串、java中String、StringBuffer、StringBuilder
- 字符串与字节数组 字符数组的转换
- matlab里cell和char,字符串与字符数组