c语言
tupelo-shen
一只单纯的程序喵
展开
-
指针和数组的区别
C/C++程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较指针与数转载 2016-02-15 20:57:25 · 414 阅读 · 0 评论 -
栈缓存溢出
在软件程序中,如果对一个固定长度的目标数据结构进行写操作时,如果超出了其长度,就会写入程序所调用的栈中的相邻内存地址区域中。这就发生了栈溢出(stack buffer overflow)。这会导致被覆盖的内存区域中的数据损坏,从而导致程序崩溃或运行不正常。相比堆上的缓存溢出,栈缓存溢出更有可能破坏程序的执行。因为栈内包含函数的返回地址,这个地址是有效的函数指针,可以被修改执行。原创 2019-01-29 16:52:42 · 2188 阅读 · 0 评论 -
函数调用栈的过程
本文分析函数的调用过程中,栈的变化过程。原创 2019-01-31 19:27:42 · 725 阅读 · 0 评论 -
C++学习-内联函数
内联函数的理解原创 2017-09-15 13:44:27 · 336 阅读 · 0 评论 -
Windows 7+Sublime Text 3配置C/C++开发环境
1 系统环境(1)Windows 7旗舰版。(2)编译环境:msys2 和 mingw。关于msys2 和 mingw的安装配置说明,请参考我的另一篇文章《Windows 7下使用GNU工具编译C/C++程序的环境搭建》。(3)Sublime Text 3最新版本:Build3126。对于其安装,使用请自行百度或者google之,网上介绍非常多;也可参考其官网。原创 2017-05-02 23:15:23 · 5466 阅读 · 0 评论 -
深入理解 typedef 与 #define
无论是C,还是C++,我们经常发现 typedef 关键字的身影。typedef 与 #define 有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了。原创 2017-04-06 16:33:21 · 587 阅读 · 0 评论 -
C++-程序设计实现
当我们有一个新的idea或者拿到用户需求的时候,常常会对怎样将其转化为代码而感到困惑。到底程序要解决哪些问题?模拟那些场景?在本文中,我们一起探讨一些这个问题。俗话说,未雨绸缪,而事半功倍。是的,在编程之前,我们必须充分地设计我们的程序。因为,程序的架构往往直接决定了程序的质量。再说,好的前期规划,也可以节省你的时间,还可以减少你的挫折感(ps:每个程序员都有过编程到一半返工的事情吧?)。那么,我们原创 2017-04-01 16:24:47 · 569 阅读 · 0 评论 -
深入理解C语言之extern
文章出处:https://my.oschina.net/lanzp/blog/188338 extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。 extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern c转载 2016-10-24 16:48:07 · 786 阅读 · 0 评论 -
深入理解C语言
本文引用于酷壳-陈皓的文章,文章地址是http://coolshell.cn/articles/5761.html Dennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, PHP, Javascript, 等等。但是,你对C了解吗?相信你看过本站的《C语转载 2016-10-24 15:00:54 · 218 阅读 · 0 评论 -
openwrt编译自己的package时遇到缺失libpthread.so.0依赖的问题
自己在openwrt/package/utils/目录下新添加了一个程序包,在编译的时候报错,...is missing dependencies for the following libraries:libpthread.so.0.这需要在该程序包的顶层makefile中添加红色字体部分。define Package/rssi_client SECTION:=utils CAT原创 2016-08-30 11:10:36 · 5435 阅读 · 0 评论 -
采用dlopen、dlsym和dlclose加载动态库
1、前言 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一转载 2016-07-22 17:56:14 · 485 阅读 · 0 评论 -
从指定字符串删除指定字符
#include #include /* * 从字符串str中删除指定的字符ch */char* delete_special_char(char *str, char ch){ char *temp, *ptr; if (str == NULL) return NULL; for(ptr = str,temp = str; (*ptr) !=原创 2016-04-15 13:15:17 · 3859 阅读 · 0 评论 -
malloc使用的系统调用
对于理解进程是如何分配内存的非常有帮助。翻译 2018-11-28 15:43:41 · 4193 阅读 · 0 评论