开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情。
一、calloc和realloc
-
calloc和malloc一样都是在堆区分配内存 -
不同点在于
calloc会将分配的内存初始化为0 -
realloc重新在堆区分配内存
-
如果分配的内存比原来要大,这个时候有两种情况出现
-
原有空间后序有足够大的空闲空间,那么直接在原有空间后继续开辟内存,返回原有空间的首地址
-
原有空间后序没有足够大空闲空间,重新会分配一个足够大的空间,并且将原有空间的内容拷贝到新空间下,释放原有空间,将新空间的首地址返回
二、sscanf的使用
- 将已知的字符串通过格式化匹配出有效信息
| 格式 | 作用 |
|---|---|
| %*s或%*d | 跳过数据 |
| %[width]s | 读指定宽度的数据 |
| %[a-z] | 匹配a到z中任意字符(尽可能多的匹配) |
| %[aBc] | 匹配a、B、c中一员,贪婪性 |
| %[^a] | 匹配非a的任意字符,贪婪性 |
| %[^a-z] | 表示读取除a-z以外的所有字符 |
- 案例
-
匹配
char * ip = “127.0.0.1”将中间数字匹配到 num1 ~ num4中 -
字符串
char * str = “abcde#zhangtao@12345”中间的zhangtao匹配出来
三、查找子串
- 实现自己的查找子串功能,需要在字符串中查找对应的子串,如果有返回字符串第一个字母的位置,如果没有返回
-1
四、指针的易错点
敲黑板啦!!!
1.指针容易越界操作
2.指针叠加会不断改变指针指向
3.返回局部变量地址
4.不可以释放野指针
五、const的使用场景
- 用来修饰函数中的形参,防止误操作
六、二级指针做函数参数的输入输出特性
- 输入特性
-
在主调函数分配内存,被调函数使用
-
在堆区创建
-
在栈上创建
- 输出特性
- 在被调函数中分配内存,主调函数使用
写在文末
欢迎志同道合的朋友来一起分享交流学习过程中的苦与乐,我们共同走向富兴!!