《C和指针》学习笔记五/数组、字符串字符和字节/

数组名的值是指向数组第一个元素的指针。但有两个例外。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函数。

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值