C语言重难点归纳(4)

121 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

一、callocrealloc

  1. callocmalloc一样都是在堆区分配内存

  2. 不同点在于 calloc 会将分配的内存初始化为0

  3. realloc重新在堆区分配内存

  • 如果分配的内存比原来要大,这个时候有两种情况出现

  • 原有空间后序有足够大的空闲空间,那么直接在原有空间后继续开辟内存,返回原有空间的首地址

  • 原有空间后序没有足够大空闲空间,重新会分配一个足够大的空间,并且将原有空间的内容拷贝到新空间下,释放原有空间,将新空间的首地址返回

二、sscanf的使用

  1. 将已知的字符串通过格式化匹配出有效信息
格式作用
%*s或%*d跳过数据
%[width]s读指定宽度的数据
%[a-z]匹配a到z中任意字符(尽可能多的匹配)
%[aBc]匹配a、B、c中一员,贪婪性
%[^a]匹配非a的任意字符,贪婪性
%[^a-z]表示读取除a-z以外的所有字符
  1. 案例
  • 匹配char * ip = “127.0.0.1”将中间数字匹配到 num1 ~ num4中

  • 字符串 char * str = “abcde#zhangtao@12345” 中间的zhangtao匹配出来

三、查找子串

  • 实现自己的查找子串功能,需要在字符串中查找对应的子串,如果有返回字符串第一个字母的位置,如果没有返回-1

四、指针的易错点

敲黑板啦!!!

1.指针容易越界操作

2.指针叠加会不断改变指针指向

3.返回局部变量地址

4.不可以释放野指针

五、const的使用场景

  • 用来修饰函数中的形参,防止误操作

六、二级指针做函数参数的输入输出特性

  • 输入特性
  1. 在主调函数分配内存,被调函数使用

  2. 在堆区创建

  3. 在栈上创建

  • 输出特性
  1. 在被调函数中分配内存,主调函数使用

写在文末

欢迎志同道合的朋友来一起分享交流学习过程中的苦与乐,我们共同走向富兴!!

屏幕截图 2023-02-05 170438.jpg