
C和C++语言
文章平均质量分 90
古月印象星空
热爱生活,热爱工作
展开
-
C\C++类型转换操作符
传统C语言的内部类型转换: C语言传统的转化很简单。 比如: double d=5.0; int a=(int)d; 这个感觉和java差不多。C++有四个内部类型转换操作符:const_cast,reinterpret_cast,static_cast,dynamic_cast。const_cast 用法:const_cast (e转载 2011-11-10 17:22:44 · 3350 阅读 · 1 评论 -
各种Mutex(互斥量)的区别
原文: http://blog.youkuaiyun.com/onlyou930/article/details/6432206各种Mutex的区别如下表:锁类型初始化方式加解锁特征调度特征普通锁PTHREAD_MUTEX_INITIALIZER同一线程可重复加锁,解锁一转载 2012-07-02 18:08:50 · 3988 阅读 · 1 评论 -
Posix线程私有数据
原文:http://baike.baidu.com/view/974776.htm http://www.blogjava.net/tinysun/archive/2010/05/29/322210.html 在单线程程序中,函数经常使用全局变量或静态变量,这是不会影响程序的正确性的,但如果线程调用的函数使用全局变量或静态变量,则很可能引起编程错误,因为这些函数使用的全局变量转载 2012-07-02 18:10:39 · 2950 阅读 · 1 评论 -
Posix线程编程API简介
原文:http://baike.baidu.com/view/974776.htmhttp://zh.wikipedia.org/wiki/POSIXhttp://www.blogjava.net/tinysun/archive/2010/05/29/322210.html一、简介 POSIX thread 称为Posix线程,简称为pthread,Posix线程是指转载 2012-07-02 17:48:20 · 3184 阅读 · 0 评论 -
pthread_create简介
原文: http://baike.baidu.com/view/1797052.htm函数简介 pthread_create是UNIX环境用于创建线程函数头文件 #include函数声明 int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*sta转载 2012-07-02 17:49:06 · 1248 阅读 · 0 评论 -
关键字restrict简介
本文摘自: http://www.oschina.net/question/32294_53573restrict是C99引入的新关键字,它用于声明只会通过该指针对其指向的内存空间进行读写操作,以便编译器能进行更好的优化。我们来看一个跟memcpy/memmove类似的问题。下面的函数将两个数组中对应的元素相加,结果保存在第三个数组中。void vector_add(const转载 2012-07-02 17:57:18 · 1413 阅读 · 0 评论 -
pthread_clean_push和pthread_clean_up
原文: http://hi.baidu.com/tju_ant/item/507566a7549bcadc5af19144语法:void pthread_cleanup_push(void (*routine)(void*), void *arg);void pthread_cleanup_pop(int execute);//这里的int参数,0是不执行push的内容,非0是执行转载 2012-07-02 18:02:56 · 1590 阅读 · 0 评论 -
Linux 信号signal处理机制
原文: http://www.cnblogs.com/taobataoma/archive/2007/08/30/875743.html一、前言 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。转载 2012-07-02 18:07:03 · 2257 阅读 · 0 评论 -
pthread_cond_signal和pthread_cond_wait简介
原文: http://apps.hi.baidu.com/share/detail/19786281http://hi.baidu.com/boobleoo0/blog/item/5f935039a37c58f8b311c77f.html http://topic.youkuaiyun.com/u/20110105/16/12717238-9816-4571-a03d-e8b603724946.h转载 2012-07-02 18:07:55 · 44395 阅读 · 10 评论 -
C++指针详解
原文:http://www.cnblogs.com/ggjucheng/archive/2011/12/13/2286391.html一、指针的基本概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针转载 2016-06-28 14:08:19 · 492 阅读 · 0 评论 -
C++虚函数表解析(基础篇)
原文:http://blog.youkuaiyun.com/haoel/article/details/1948051一、简介 C++中的虚函数的作用主要是实现了多态的机制。虚函数(Virtual Function)其实是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际转载 2016-06-28 15:03:29 · 432 阅读 · 0 评论 -
C++虚函数表解析(高级篇)
原文:http://blog.youkuaiyun.com/haoel一、前言在《C++虚函数表解析》中,对C++虚函数表进行了探讨,但是在谈论虚函数表里,至少有以下这些内容没有涉及:1)有成员变量的情况。2)有重复继承的情况。3)有虚拟继承的情况。4)有钻石型虚拟继承的情况。 这篇文章将会是《C++虚函数表解析》的一个续篇,将以C++对象的内存布局为重点,也是一篇高级进阶的文转载 2016-06-28 15:04:28 · 2771 阅读 · 0 评论 -
C++ 对象的内存布局(单继承)
原文:http://blog.youkuaiyun.com/haoel/article/details/3081328关于一般单继承C++对象的内存布局,我们假设有如下所示的一个继承关系: 请注意,在这个继承关系中,父类,子类,孙子类都有自己的一个成员变量。而了类覆盖了父类的f()方法,孙子类覆盖了子类的g_child()及其超类的f()。 我们的源程序如下所示:class P转载 2016-06-28 15:16:33 · 496 阅读 · 0 评论 -
C++ 对象的内存布局(多重虚拟继承)
原文:http://blog.youkuaiyun.com/haoel/article/details/3081328下面,让我们来看看多重继承中C++对象的内存布局的情况,假设有下面这样一个类的继承关系。注意:子类只overwrite了父类的f()函数,而还有一个是自己的函数(我们这样做的目的是为了用g1()作为一个标记来标明子类的虚函数表)。而且每个类中都有一个自己的成员变量:转载 2016-06-28 15:17:54 · 702 阅读 · 0 评论 -
C++ 对象的内存布局(重复继承)
原文:http://blog.youkuaiyun.com/haoel/article/details/3081385下面,让我们来看看重复继承中C++对象的内存布局的情况,假设有下面这样一个类的继承关系。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,每个类都有两个变量,一个转载 2016-06-28 15:18:46 · 842 阅读 · 0 评论 -
C++ 对象的内存布局(重复虚拟继承)
原文:http://blog.youkuaiyun.com/haoel/article/details/3081385下面,让我们来看看重复虚拟继承中C++对象的内存布局的情况,假设有下面这样一个类的继承关系。虚拟继承的出现就是为了解决重复继承中多个间接父类的问题的。钻石型的结构是其最经典的结构。也是我们在这里要讨论的结构: 上述的“重复继承”只需要把B1和B2继承B的语法中加上virtu转载 2016-06-28 15:21:05 · 544 阅读 · 0 评论 -
集合属性列表类(NSArray与NSDictionary)读写文件操作
本文参照自:http://blog.youkuaiyun.com/zhangmiaoping23/article/details/42644251http://www.xuebuyuan.com/1686844.html一、前言iOS中文件的存储位置主要有以下几类:Documents:用于存储应用程序中经常需要读取或写入的常规文件。tmp:用于存储应用程序运行时生成的文件。(随转载 2016-06-28 16:04:53 · 2588 阅读 · 0 评论 -
线程属性pthread_attr_t简介
Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置原创 2012-07-02 18:04:28 · 66365 阅读 · 10 评论 -
pthread_exit简介
本文转载自:http://baike.baidu.com/view/3361775.htm 线程通过调用 void pthread_exit(void* retval)函数终止执行,就如同进程在结束时调用exit函数一样。这个函数的作用是,终止调用它的线程并返回一个指向某个对象的指针,该返回值可以通过pthread_join函数的第二个参数得到。 当然执行pthread_exi转载 2012-07-02 18:01:29 · 4001 阅读 · 0 评论 -
snprintf简介
转载自:http://baike.baidu.com/view/1966670.htm语法:int snprintf(char *str, size_t size, const char *format, ...); snprintf用于将可变个参数(...)按照format格式化成字符串,然后将其复制到str中 (1) 如果格式化后的字符串长度 size,则将此字符串转载 2012-03-22 14:20:43 · 1104 阅读 · 0 评论 -
linux动态库
一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。关于静转载 2011-12-10 09:50:24 · 1059 阅读 · 0 评论 -
extern c详解(上)
文章修改自:http://wenku.baidu.com/view/8872c444b307e87101f69650.html引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:#ifdef __cplusplus extern "C" { #endif /*...*/#ifdef __cplusplus } #endif它到底有什么用呢,你知转载 2011-12-10 09:51:23 · 1034 阅读 · 0 评论 -
sprintf简介
本文编辑转载自:http://wenku.baidu.com/view/cab45163caaedd3383c4d331.htmlC语言的sprintf函数跟printf在用法上几乎一样,只是两者打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出sprintf是个变参函数,定义如下:int sprintf( char *buffer, const char *f转载 2011-12-17 15:44:31 · 2169 阅读 · 0 评论 -
C语言中字符串的格式化
本文整理转载自:http://wenku.baidu.com/view/065d62fff705cc1755270989.htmlC语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。一、类型我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示:字符转载 2011-12-17 15:45:16 · 12012 阅读 · 1 评论 -
Linux静态库
一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。另外,翻译 2011-12-10 09:48:48 · 1334 阅读 · 0 评论 -
extern c详解(下)
文章修改自:http://wenku.baidu.com/view/8872c444b307e87101f69650.html三、C和C++互相调用我们既然知道extern "C"是实现的类C和C++的混合编程。下面我们就分别介绍如何在C++中调用C的代码、C中调用C++的代码。首先要明白C和C++互相调用,你得知道它们之间的编译和连接差异,及如何利用extern "C"来实现相互调用转载 2011-12-11 10:28:00 · 1048 阅读 · 0 评论 -
静态库调用动态库
假设我现在个动态库A,它有个函数叫A_Function(),同时我又有个静态库B,静态库B有个函数B_Function(),该函数又使用了动态库A的A_Function()函数。那么此时它是动态调用呢?还是静态库B在进行编译时会把动态库A的A_Function()函数的相关代码拷贝过来,运行时进行静态调用呢?经过写程序测试,终于得出结论:是动态调用。即静态库对动态库的调用仍然是动态调用。也原创 2011-12-11 10:30:40 · 4434 阅读 · 0 评论 -
结构体struct简介(上)
本文整理自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471一、前言在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于转载 2012-03-27 21:31:47 · 6411 阅读 · 0 评论 -
结构体struct简介(下)
本文整理自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471六、结构体指针变量 指向一个结构体的指针变量称之为结构体指针变量。 结构指针变量中的值是所指向的结构变量的首地址。 通过结构指针即可访问该结构变量, 这与数组指针和函数指针的情况是相同的。结构指针变量说明的一般形式为: struct转载 2012-03-27 21:32:28 · 2071 阅读 · 0 评论 -
C语言struct内存占用问题
本文编辑整理自:http://hi.baidu.com/pine515/blog/item/28f41f496042e8ee83025c4e.htmlhttp://blog.sina.com.cn/s/blog_4913c1f301000bip.html一、 ANSI C标准中并没有规定,相邻声明的变量在内存中一定要相邻。为了程序的高效性,内存对齐问题由编译器自行灵活处理,这样导致转载 2012-03-27 21:33:26 · 7276 阅读 · 0 评论 -
C语言中sizeof用法总结
编辑摘自:http://blog.sina.com.cn/s/blog_4913c1f301000bip.html在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。一、参数为数据类型或者为一般变量。例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可转载 2012-03-27 21:38:20 · 1768 阅读 · 0 评论 -
C/C++语言中struct的深入探讨
文章整理自:http://blog.youkuaiyun.com/ehui928/article/details/546386一. struct的巨大作用 面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种转载 2012-03-27 21:35:45 · 1362 阅读 · 0 评论 -
C语言的动态内存分配
本文整理摘自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 在C语言中,数组的长度是预先定义好的, 在整个程序中固定不变。C语言中不允许动态数组类型。例如: int n;scanf("%d",&n);int a[n]; 用变量表示长度,想对数组的大小作动态说明, 这是错误的。但是在实际的编程中,往往会发生这种情转载 2012-03-27 21:37:15 · 1062 阅读 · 0 评论 -
C语言中联合体union的使用
本文编辑整理自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471一、前言“联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最转载 2012-03-27 21:39:10 · 3719 阅读 · 0 评论 -
宏定义简介
转载整理自:http://zhidao.baidu.com/question/314176150.htmlhttp://www.cppblog.com/shaovie/articles/14038.html 一、前言宏定义又称为宏代换、宏替换,简称“宏”。 宏是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译 。二、基本1.1.不带转载 2012-03-22 16:27:27 · 1221 阅读 · 1 评论 -
深入理解fork()
本文编辑整理自:http://blog.youkuaiyun.com/zjc0888/article/details/6396979 大家都知道fort()是用于创建一个子进程。但是对它可能并不是很理解。虽然我自认为大学时操作系统学到很不错,但是直到今天才算真正的理解的进程如何创建了一个子进程。实例1:1.c文件#include ;#include ;main (){翻译 2012-05-26 18:29:50 · 1817 阅读 · 3 评论