转载自:Linux gdb调试器用法全面解析 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序。 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。 当程序被停住时,可以检查此时程序中所发生的事,并追索上文。 动态地改变程序的执行环境。 不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须。而且,调试内核和调试应用程序时使用的gdb命令是完全相同的,下面…

2019年11月22日 0条评论 74点热度 阅读全文

例程1 #include<stdio.h> int main(void) { char *s="hello"; printf("%s\n", s); s[0]="H" //因为s指针指向的字符串"hello"是字符串常量,所以不能通过指针进行更改, //所以这里会产生段错误 printf("%s\n", s); return 0; } 例程2 #include<stdio.h> #include<string.h> #include<stdlib.h> int mai…

2019年11月22日 0条评论 121点热度 阅读全文

前言 近来学习操作系统这门课,课程的实验基于linux 0.11,于是从图书馆借来了 C Traps and Pitalls 和 Expert C programming,打算提高一下c语言水平。先从前一本开始。这本书很薄,即使是英文版也只有140多页,讲的都是c语言中容易犯错的地方。注意:这篇笔记并没有包括整本书的内容,而只是摘抄了本人需要的知识(加上了一些自己的理解)。如需完整了解,还请自行看书。 第一章:词法陷阱 符号之间的空白(extra space)是被忽略的。 extra space包括空格、制表符和换…

2019年11月17日 0条评论 141点热度 阅读全文

在 『M4 说要有 Lambda,就有了 Lambda』一文的末尾,指出了使用 M4 所模拟的匿名函数无法作为闭包使用,并断言无法在 C 标准之内实现闭包。事实上,这个结论是武断的,因为当时我没有考虑 C 语言的全局变量的效用。 qsort 的故事 C 标准库中提供了一个 qsort 函数,它可以对任意类型的值构成的数组进行排序,其声明如下: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const voi…

2019年11月12日 0条评论 91点热度 阅读全文

Nodejs定义 Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. 什么是IO IO(Input & Output),顾名思义,输入输出即是IO。磁盘,网络,鼠标,键盘等都算IO;而大家通常说的IO,大部分指磁盘和网络的数据操作。对于磁盘,IO=读写;对于网络,IO=收发。 Blocking I/O,从一个作业说起 学习C语言时,有个作业,大意是写一个server程序和c…

2019年9月18日 0条评论 83点热度 阅读全文

C/C++中的数组名相当于一个指针常量 我们都知道,在C/C++中如果定义一个数组,那么这个数组的数组名就是这个数组的起始位置的指针,比如 int i[10]; 那么数组名 i 就是一个指针(准确的说是指针常量,因为它只能指向这个数组的首地址,不能被更改再去指向其他的地址),其就等于 &i[0] (取 i 数组的第一个元素的地址) 那么Delphi中的数组和数组名呢? 那就自己编写一个程序尝试一下 procedure TForm1.btn1Click(Sender: TObject); var a: arr…

2019年9月10日 0条评论 75点热度 阅读全文

1、sqlite之C接口简介 1.1 sqlite3_open int sqlite3_open ( const char *filename, /* Database filename (UTF-8) */ /* 数据库将采用UTF-8的编码方式,sqlite3_open16采用UTF-16的编码方式 */ sqlite3 **ppDb /* OUT: SQLite db handle */ /* 数据库连接对象 */ ): 打开一个sqlite数据库文件的连接并且返回一个数据库连接对象。 First: 数据库名…

2019年8月27日 0条评论 96点热度 阅读全文

PS: 更全面的总结可以从相关的文档中获取,为了叙述方便这里特指linux环境下 1. 涉及的一些背景知识 1.1. nonblock socket 描述 对应block,如果一个socket设置为nonblock,那么其相关的操作将变为非阻塞的。这里所说的非阻塞,并不是说异步回调什么的,例如,调用recv()函数: #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_…

2019年8月20日 0条评论 76点热度 阅读全文

LEX/FLEX词法分析器 CONTENTS: [TOC] 这篇文章的内容包括: lex语法格式 linux下flex的安装和使用 flex实例 flex源代码的编译和使用 Lex/Flex词法分析器 Lex是LEXical compiler的缩写,是Unix环境下非常著名的工具,主要功能是生成一个词法分析器(scanner)的C源码,描述规则采用正则表达式(regular expression)。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c 的文件,然后由C编译器编译生成一个词法分析器。…

2019年8月2日 0条评论 96点热度 阅读全文

角谷猜想 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。 程序要求输入一个整数,将经过处理得到1的过程输出来。 输入:一个正整数 输出:从输入整数到1的步骤,每一步为一行,每一部中描述计算过程,假定输入为7,则输出为: 7*3+1=22 22/2=11 11*3+1=34 34/2=17 17*3+1=52 52/2=26 26/2=13 13*3+1=4 40/…

2019年7月9日 0条评论 52点热度 阅读全文