c/c++
文章平均质量分 62
yafeng_jiang
这个作者很懒,什么都没留下…
展开
-
空类默认隐式声明的成员函数
最近在论坛上发现的问题,改变了我以前在这方面的错误看法,跟大家分享一下。据说这个问题在面试中被问到的机率比较高,幸运的是我好像没有碰到过。一般流行的看法是:class Empty{}; 相当于:class Empty { public: Empty(); Empty(const Empty&); ~Empty(); Empty&原创 2011-12-19 23:41:52 · 2014 阅读 · 2 评论 -
贴出本人的vim配置文件,随时更新
" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime" you can find below. If you wish to change an原创 2012-03-27 22:31:16 · 2309 阅读 · 0 评论 -
select()用法
select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: fd_set set; FD_ZERO(&set); /* 将set清零使集合中不含任何fd*/ FD_SET(fd, &set);转载 2012-03-22 14:09:55 · 1150 阅读 · 0 评论 -
getopt()函数的使用
每一天你都在使用大量的命令行程序,是不是感觉那些命令行参数用起来比较方便,他们都是使用getopt来实现的。在Linux下使用getopt写程序是一种比较方便的事情,下面来简单的介绍一下getopt的使用。 在讨论参数处理之前,我们先明确两个概念:选项、选项参数 gcc -g -o test test.c我们经常使用上面的命令来编译程序,这里g和o就原创 2012-03-20 17:05:07 · 1680 阅读 · 0 评论 -
数组名a和&a 的区别
对于数组定义int a[5];所有人都明白这里定义了一个数组,其包含了5 个int 型的数据。 来看这样一个例子:#include int main(void) { int a[5] = {1, 2, 3, 4, 5}; int *ptr = (int*)(&a+1); printf("%d\n", &a); //1245036 printf("%原创 2012-03-05 15:19:35 · 3310 阅读 · 2 评论 -
strtok和strsep函数详解
函数原型:char *strtok(char *s, const char *delim); char *strsep(char **s, const char *delim); 功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。原创 2012-01-01 09:41:45 · 55474 阅读 · 6 评论 -
va_list详解
1. 概述 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论. 2. 定义 大家先看几宏. 在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:原创 2012-01-01 09:46:12 · 3312 阅读 · 2 评论 -
printf简单实现版本
这是stdio.h包中printf函数的一个简单实现代码,只针对%d,%s,%c作为处理。有兴趣的朋友可以将其继续扩展,也可以去寻找linux内核中的printf函数源代码加以研究。实现代码主要用到了va_list,关于va_list方面的内容可参见点击打开链接代码:#include #include #include int myprintf(const char *fm原创 2012-01-01 09:47:37 · 5257 阅读 · 2 评论 -
c++中的常量折叠
先来看一个例子:#include int main() { const int a=9; int *p=(int*)&a; *p=10; printf("%p %p\n", &a, p); //0012FF7C 0012FF7C printf("a: %d , *p %d\n",a,*p); //a: 9 ,*p: 10 return 0;}原创 2012-01-01 09:44:01 · 2473 阅读 · 0 评论 -
默认构造函数
在文章开始之前,首先指出对于c++新手的两个常见的误解: 一、任何class如果没有定义default constructor,就会被合成出一个来。 二、编译器合成出来的default constructor会明确设定'“class内每一个data member的默认值”。 首先我们来讨论第一个误解。编译器并不是给任何一个没有user-decl转载 2011-12-29 14:13:38 · 1545 阅读 · 0 评论 -
C,C++表达式求值顺序
经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a = 4; cout C++ 不是规定 要弄清这些,需要理解的一个问题是:如果程序里转载 2011-12-29 13:45:29 · 1270 阅读 · 0 评论 -
cout输出操作符求值顺序
在逛论坛的时候发现这个问题的,然后就动手查了下,也写了下代码测试不过首先应该声明的是 : c++中对于cout后面的表达式的求值顺序是未定义的,具体的运行结果要由编译器的实现来决定.本人是在vc++ 6.0下编译的.测试代码:#include using namespace std;int fun() { static int xx = 0; +原创 2011-12-06 13:40:01 · 2692 阅读 · 1 评论 -
windows与linux下的\r\n
\n 为ASCII的0x0a 换行 \r 为ASCII的0x0d 回车 在windows 系统中,当你输入回车时会自动变成\r\n 在linux下的回车键只代表\n 而在windows下的回车键表示\r\n \n为进入下一行,\r为打印头回到行首上 linux/u原创 2011-12-27 13:10:31 · 10959 阅读 · 5 评论 -
运用ifstream的getline时需要注意的问题
我们在应用中经常会遇到从文件中读行的操作,当然方法有多种,这里我想和大家探讨一下用ifstream的getline方法:主要code如下:…… const int MAXLEN = 256; std::vector vecFilelines; std::ifstream fs("test.txt"); if (fs.good()) {转载 2011-12-27 15:40:36 · 20267 阅读 · 1 评论 -
linux 函数库之 times
函数名: times头文件: #include函数声明: clock_ttimes(structtms *buf);man帮助查看: man 2 times参数介绍:1. clock_t typedef long int clock_t2. tmsstruct tms { clock_t tms_utime; /* user time */转载 2012-04-18 16:05:18 · 14868 阅读 · 1 评论