- 博客(31)
- 收藏
- 关注
原创 C语言运算符优先级 详细列表
运算符的优先级:C语言中,运算符的运算优先级共分为15 级。1 级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与
2014-11-24 21:47:50 5692
转载 this指针
this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象。全局仅有一个this指针 每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象,则有n组同样大小的空间以存放n个对象中的数据成员。但是,不同对象都调用同一个函数代码段。那么,当不同对象的成员函数引用数据成员时,怎么能保证引用的是所指定的对象的数据成员呢?假如,
2014-11-25 18:24:51 415
原创 深拷贝和浅拷贝的区别?如果要delete一个浅拷贝,需要注意什么条件?
现在有一个指针p1指向了一个内存空间m1; 浅拷贝就是再用一个新的指针p2指向这片内存空间m1; 深拷贝就是用一个新的指针p3指向m1的副本m2 delete一个浅拷贝,首先要测试是不是有其它的指针还在指向这片空间。不然,直接就是野指针了。为什么野指针那么是绝对要禁止的?野指针现在指向了一片内存区间,这片内存区间以前是有意义的,现在被释放了,操作系统可能会讲这边区间放上其它
2014-11-24 18:10:09 551
转载 断言assert(exp)的实现
断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。
2014-11-24 17:31:12 1076
转载 strcpy/strlen/strcmp的实现
已知strcpy函数的原型是:char *strcpy(char *dst, const char *src);实现strcpy函数解释为什么要返回char *假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码char * strcpy(char *dst,const char *src) //[1]{ ass
2014-11-24 17:21:14 318
转载 SQL的内连接与外连接
在oracle的SQL语句常用的连接有内连接(inner join),外连接(outer join)等,内连接又包括等值连接,非等值连接,自连接;而外连接又分为左连接和右连接。其中默认的是内连接的等值连接。 为了方便我们创建两张最简易的表A、B,具体的表结构参看下面,来分析内连接与外连接的区别 图1
2014-11-20 23:54:34 284
转载 内存对齐与补齐
首先我们先看看下面的C语言的结构体:[cpp] view plaincopyprint?typedef struct MemAlign { int a; char b[3]; int c; }MemAlign; typedef struct MemAlign{ int a; char b[3]; int c
2014-11-20 17:51:06 407
转载 多线程之间共享的资源有哪些
课本的说法:进程是资源分配的基本单位;线程是系统调度的基本单位。平时我们写的程序都是作为线程运行的;进程可以看做是包括一系列线程和资源的统称;一个进程至少包括一个线程(主线程,进入main函数时产生的);在其中可以创建其它线程,也可以不创建。同一进程间的线程究竟共享哪些资源呢,而又各自独享哪些资源呢?共享的资源有a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地
2014-11-20 17:26:55 2518
转载 c++中explicit
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。
2014-11-19 23:32:51 259
转载 信号和槽使用时各种函数的实际调用顺序
信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它
2014-11-19 18:52:36 5606 1
转载 Ubuntu 下使用命令行安装QT
在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
2014-11-19 18:49:17 2991
原创 使用popen和system阻塞进程的区别
popen和system都可以执行外部命令。 popen相当于是先创建一个管道,fork,关闭管道的一端,执行exec,返回一个标准的io文件指针。 system相当于是先后调用了fork, exec,waitpid来执行外部命令 popen本身是不阻塞的,要通过标准io的读取使它阻塞 system本身就是阻塞的。 最近写的程序,要求进程在调用的外部命令运行完毕
2014-11-19 13:50:32 16855
转载 配置1——VI
首先安装vim编辑器$sudo apt-get install vim vim-gnome vim-tiny vim-gtk vim-nox在用户目录下建立自己的配置文件#cd ~touch一个名为.vimrc文件#touch .vimrc#vi .vimrc输入以下配置:set nocompatible 不使用vi默认键盘布局s
2014-11-16 10:34:40 435
原创 linux操作
解决办法:方案一: 可以安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令。安装vim: ubuntu预装的是vim tiny版本,而需要的是vim full版本。执行下面的语句安装vim full版本: $sudo apt-get remove vim-common $sudo apt-get install vim
2014-11-16 09:46:39 580
转载 如何在Ubuntu中安装中文输入法 .
这里权当笔记,下次安装系统,就可以按部就班了。主要安装以下几个包,sudo apt-get install以下几个包language-pack-gnome-zhlanguage-pack-zhlanguage-support-fonts-zhlanguage-support-input-zhlanguage-support-zh这几个包可能不存在,那么我就就在后
2014-11-15 15:51:41 333
转载 Ubuntu下挂载U盘
首先,需要在一个 root 控制台工作, 使用如下命令: sudo -i 挂u盘之前,运行命令cat /proc/partitions,看看现在系统中有哪些分区。插上u盘以后,再次运行上述命令,看看多出来什么分区(通常是sda1,PS由于偶是在虚拟机下装的,所以是sdb1).1、插入U盘2、输入 fdisk -l /dev/sda 查看输出结果,比如我的是这样的
2014-11-15 12:43:12 410
转载 linux下一些常用软件安装
1 安装man手册汉化包sudo apt-get install manpages-zh2 安装编程工具geanysudo apt-get install geany3 安装gcc/g++/gdb/make 等基本编程工具sudo apt-get install build-essential 4 安装 libgtk2.0-dev libglib2.0-dev 等开发相关的
2014-11-15 11:56:04 599
原创 文件流和二进制流
C语言读写文件有两种方式ASCII 和 二进制。现在举例说明:内存中的字符或字符串都是文本模式(unicode编码存储,统一长度,定长码,方便)内存中的其他变量都是以二进制编码存储程序的代码以文本模式ASCII码方式存储 1.在windows系统中,文本模式下,文件以"\r\n"代表换行。若以文本模式打开文件,并用fputs等函数写入换行符"\n"时,函数会自动在"\n"前
2014-11-13 23:31:11 6354
转载 linux send与recv函数详解
1 #include 2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);3 ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);recv 和send的前3个参数等同于read和write。flags参数值为0或:
2014-11-10 00:08:41 294
原创 Linux编程命名规则
如果只是编写一些小程序,程序只有几十或几百行,编程风格可能并不重要。然而,如果是和许多人一起进行一定规模的项目开发,或者希望过一段时间之后,还能够快速而准确地理解自己的程序,就必须养成良好的编程习惯。良好的编程风格可以增加程序代码的可读性。编程风格最能体现一个程序员的综合素质。变量的命名规范是编程风格的一项重要内容。在Windows下开发软件,许多人采用匈牙利命名法,而在Linux环境下,并不
2014-11-09 14:26:56 4898
转载 用GDB调试程序(一)
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的
2014-11-09 11:35:23 259
转载 C++中内联函数与宏
C++内联函数(Inline)介绍 介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中
2014-11-08 10:59:23 354
转载 在C++ 程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?
C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。
2014-11-08 10:20:00 2221
转载 C++中的标准异常类
C++中的标准异常类namespace std{ //exception派生 class logic_error; //逻辑错误,在程序运行前可以检测出来 //logic_error派生 class domain_error; //违反了前置条件 class invalid_argument; //指出函数的一个无效参数
2014-11-07 12:52:55 326
转载 在C++中子类继承和调用父类的构造函数方法
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。构造原则如下: 1. 如果子类没有定
2014-11-07 12:45:11 345
转载 c中输入不固定长度的字符串
1 /* 2 功能:输入不固定长度的字符串 3 核心:最大长度、已用长度、步进长度,malloc()/realloc()/getc(); 4 */ 5 #include 6 #include 7 #include 8 #define STRLEN 20 //每次分配的长度 9 int main() { 10 in
2014-11-07 11:24:37 5007
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人