`
hongbochen1223
  • 浏览: 43992 次
文章分类
社区版块
存档分类
最新评论
文章列表
(一):进程的概念 ​线程,是在进程中活动的对象。每个线程都拥有一个独立的程序计数器,进程栈和一组进程寄存器。内核调度的是线程而不是进程。在Linux中,进程和线程的区别比较微妙,一会我们通过源码来查看其两个的区别。 进程提供两种虚拟机制,虚拟处理器和虚拟内存。其中在线程之间可以共享虚拟内存,但是每个线程都拥有各自的虚拟处理器。 在linux中,创建一个进程的函数是fork(),该系统调用通过复制一个现有的进程来创建一个全新的进程。调用fork()的进程称为父进程,被创建的进程成为子进程。fork()系统调用从内核中返回两次:一次回到父进程,一次回到子进程。通常,创建新的进程都是为了立即 ...
(一):内核源码的获取 ​1:通过网站 https://www.kernel.org/ 可以获得最新版本的内核源码,现在最新版的内核源码版本为 如果想要获取之前版本的内核源码,点击进入 https://www.kernel.org/pub/ 进入分支。在《linux内核的设计 ...
在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名为字符型,学号为整型或字符型,年龄为整型,性别为字符型,成绩为整型或实数型别,显然,不能使用一个数组来存放这一组数据。因为数组中各个元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型–结构。他相当于其他高级语言中的记录。 “结构”是一种构造类型,他是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。结构是一种“构造”而成的数据类型,在说明和使用之前先定义它,也就是构造它。就像是定义函数一样。 1:结构的定义 定义一个结构的一般形式为: str ...
回文是指顺读和反读内容均相同的字符串,例如”121”,”ABBA”,”X”等。本实例将编写函数判断字符串是否是回文。 引入两个指针变量,开始时,两个指针分别指向字符串的首末字符,当两个指针所指字符相等时,两个指针分 ...
用已知字符串s中的字符,生成由其中n个字符组成的所有字符的排列。设n小于字符串s的字符个数,其中s中的字符在每个排列中最多出现一次。 例如,对于s[]=”abc”,n=2,则所有字符的排列有:ba,ca,ab,cb,ac,bc。 算法思想: 使用 ...
这一小结,将要学习将构建布局在窗口和对话框中.为了方便的管理我们的构件,在GTK+中,通常使用不可见的构件称作layout containers. 这一小节将要讨论GtkAlignment,GtkFixed,GtkVBox,GtkTable. (一):GtkFixed 容器构建GtkFixed用于布置子构件在一个固定的位置和设定固定的大小.这种构件并不属于自动的布局关系器.实质上,在大多数应用程序中,并不多使用GtkFixed; 而在只用于一些比较特殊的场合,例如:游戏,含有绘图功能的专用软件,那些需要移动和调整大小的软件(如电子表格中的图标)以及那些小型的教育用途软件. 下面我们看 ...
通过上一小节,基本上掌握了如何向窗口中添加菜单栏以及为menu_item添加快捷键,下面我们通过一个实例来创建选择菜单选项.GtkCHeckMenuItem就是一个可以生成带有选择的菜单选项. 下面看一下代码: #include <gtk/gtk.h> void toggle_statusbar(GtkWidget *widget,gpointer statusbar){ if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))){ gtk_widget_show(statusbar) ...
near指针和far指针 在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。 near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。 far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一个far指针的段地址为0x7000,偏移量为0x1244,则该指针指向地址0x71224.如果一个far指针的段地址是0x7 ...
我们都知道,在STL中基本上都使用了模板类的声明,即template。在模板类的声明中,我们有两种方式: template <class T> template <typename T> 在这里,class和typename是相同的。也就是说,在声明一个template type parameter(模板类型参数)的时候,class和typename意味着 完全相同的东西。 但是,在C++中,有的时候必须要使用typename.下面我们列举下面一个例子。 关键字typename被用来作为型别之前的标识符号。 template <class T& ...
“菜单”(menubar)是GUI程序中最为常见的部分之一.各种各样的功能都能使用菜单来实现. 下面这个例子生成一个含有文件菜单的菜单栏,并且文件菜单将只有一个菜单条(menu item).点击之后程序将会退出. #include <gtk/gtk.h> int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkWidget *menubar; GtkWidget *filemenu; GtkWidget *file; GtkWidget *q ...
将字符行内单字之间的空白符平均分配插入到单字之间,以实现字符行排版。首先要统计字符行内单字个数,字符行内的空白字符数。然后计算单字之间 应该平均分配的空白字符数,另外约定多余的空白字符插在前面的单字间隔中前面的每个间隔多一个空白符,插完为止。 下面是我的代码的实现部分,这个字符行排版代码比较简答,其中的,实现统计单词个数的方法还是值得大家学习一下的。 #include <stdio.h> #define N 80 /** * @brief main * 将字符行内单字之间的空白符平均分配插入到单字之间, * 以实现字符行排版。 * * 首先要统计字符行内单字 ...
在我们第一讲当中的窗口中,我们仅仅就是学习了如何使用GTK+创建一个空白的窗口,但是仅仅一个空白窗口是没有用的,我们总是需要设置窗口的属性和向窗口中添加一些子控件,包括应用程序的图标,菜单,工具栏等等内容. 下面的一段程序是设置我们的窗口的一些属性,包括设置窗口的标题,窗口的大小,窗口在屏幕中的位置等等属性.下面看一下代码: #include <gtk/gtk.h> #include <stdio.h> int main(int argc,char *argv[]) { GtkWidget *window; gtk_init(&argc, ...
GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.GTK+提供了一套完整的组件集,同时他不仅仅适用于小型工具开发,同样也适用于一个完整的项目套件. 像我们熟悉的gnome桌面,各个系统平台上的GIMP图像处理软件,VM ...
控制流程的三种实现方式: 全硬件,软硬结合,全软件 1:逻辑上是等价的 2:硬件实现“速度快,成本高,灵活性差,占用内存少 3:软件实现,速度慢,复制费用低,灵活性好,占用内存多,容易设计,可改性强, 适应性强,设计周期短 理论上,由两种极端实现方法 1:全硬件机器:操作系统,高级语言,应用等 2:硬件只有1位加法和分支操作,其他都用软件 软硬件实现的优缺点 软硬件取舍的基本原则: 很高的性能价格比 计算机性能评测: 计算机性能是指计算机的工作速度,是程序执行时间的倒数 计算机的性能不仅仅与计算机系统 ...
编制一个从键盘读入实数的函数readreal(double *rp)。函数将读入的实数字符列换成实数后,利用指针参数rp,将实数存于指针所指向的变量*rp。 解析: 函数在返回之前,将最后读入的结束实数字符列的字符返还给系统,以便随后读字符时能再次读入该字符。函数若能正常读入实数,函数返回整数1,如果函数在读入过程中,未遇到数字符之前,遇到不能构成数字的情况,函数返回-1,表示为读到实数。 在输入实数时,在实数之前可以有一个数不定的空白类字符,组成实数的字符列有数的符号字符,实数的整数部分,小数点和实数的小数部分,其中,某些部分可以缺省。设实数字符列有以下几种可能形式: 数符 整数部分 ...
Global site tag (gtag.js) - Google Analytics