欢迎大家来到IT世界,在知识的湖畔探索吧!
经过一点一滴的努力,字符串&内存操作函数系列用了7篇文章已基本写完,也算是对于这段时间自己的一个交代。毕竟字符串&内存操作函数在实际的研发过程中还是很常用的。笔者曾经参与一个项目,这个项目的一部分是从某个网址抓取地理位置数据,然后根据指定的“字段”来对这些信息进行解析,最后再将这些指定“字段”的信息打包通过网络上传到服务器。其中就用到字符串&内存操作函数。关于字符串&内存函数的文章网址如下所示:
嵌入式Linux开发《C语言专题(五:(3)函数之字符串函数1)》
嵌入式Linux开发《C语言专题(五:(3)实用的字符串函数2)》
嵌入式Linux开发《C语言专题(五:(3)实用的字符串函数3)》
嵌入式Linux开发《C语言专题(五:(3)实用的内存函数4)》
嵌入式Linux开发《C语言专题(五:(3)实用的内存函数5)》
嵌入式Linux开发《C语言专题(五:(3)实用的内存函数6)》
嵌入式Linux开发《C语言专题(五:(3)实用的内存函数总结7)》
(1)字符串操作函数:
strlen、strcpy、strncpy、strcat、strncat、strcmp、strncmp、strcasecmp、strncasecmp、strchr、strrchr、strstr、strpbrk、strspn、 strcspn等
(2)内存操作函数:
memcpy、memmove、memset、 memcmp 、memchr 、memrchr 、 malloc、calloc、 free、 realloc 等,大多数以mem开头。
在标准C中,以mem开头这些内存操作函数被认为是字符串函数的一部分,从头文件是string.h中可以看出。
看完这些函数名后是不是觉得有些函数很类似,比如
strcpy、strncpy与memcpy、memmove
strcmp、strncmp、strcasecmp、strncasecmp与 memcmp
strchr、strrchr与memchr 、memrchr
其实再通过观察它们的参数char *strcpy(char *dest, const char *src);与void *memcpy(void *dest, const void *src, size_t n);,你会发现字符串操作函数的参数几乎都是char *,而内存操作函数大多数是void *(万能类型匹配符)。
也就是说字符串函数只能处理字符串,而内存操作函数直接对内存操作,不仅可以处理字符串,还可以处理数组、结构等任何类型。这一点区别非常重要。比如我们最常见的是定义一个数组int a[20],然后用memset(a,0,sizeof(a))函数对数组进行初始化。
动态内存申请函数malloc&free&calloc&realloc一定要记得使用方式,一定不要出现申请的内存没有释放,也不要出现野指针等错误。当然在学习的过程中,可以“故意”出现这些错误,是更好的理解这些函数的使用;但是在研发中可不要这样,一不小心可能会被同事笑话。这些错误原因我已在文章中详细介绍过。曾经公司中的一个同事在处理音频代码时,用malloc申请内存空间,因为一直没有释放,导致在运行一段时间后,系统真的崩溃了。所以,提醒自己,一定要用好这些函数。
这些文章中的代码都是经过笔者亲自上机验证的,希望读者看完文章后多敲敲代码,反复测试验证,通过分析执行结果来反过来理解代码,从而使自己的能力真正得到提升。
后续继续C语言其它内容…
更多精彩内容可以关注此头条号:嵌入式软硬件开发 喜欢的话大家可以“评论”,“转发”、“点赞”或者“收藏”,感谢大家。相互交流,共同成长。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/73668.html