A - C/C++
文章平均质量分 69
DayDreamingBoy
这个作者很懒,什么都没留下…
展开
-
char *与char []的区别
其实,只要记住一点就能很好区分char *和char []:char *定义的是一个指向字符串的指针(注意:C语言中没有对应字符串的内置类型或者类类型),而char []就是C语言中的用来定义字符数组(注意:字符数组是不同于字符串,如果字符数组以'/0'结尾,那么可以视为字符串)。 分析如下 (1)char str1[] = {'a', 'b', 'c'};//可以不用指定维数,如果这里指定就是char str1[3] char str2[] = {'a',原创 2010-11-08 15:16:00 · 12273 阅读 · 4 评论 -
判断有符号和无符号的变量或类型[C/C++]
判断有符号和无符号的变量或类型 参考别人的代码,自己修改了一下。发现有符号数和无符号数,如果都是正数的话,二进制值是一样,因此不能简单地和0比较。具体代码,如下:#include #include using namespace std;#define ISUNSIGNED(a) (((a) | 0x1 0)#define ISUNSIGNED_TYPE(原创 2013-09-19 14:19:18 · 3199 阅读 · 0 评论 -
C++中struct和class关键字的区别
C++中struct和class关键字的区别 对于这个问题很多人会说:struct和class除了“默认的成员访问权限”这一点不同外,没有任何区别(P141,摘自《高质量程序设计指南C++/C语言》第3版,修订版),即struct里的默认的成员访问权限是public,而class则是private。 其实,仔细看看《C++ Primer》(第4版),在48原创 2013-08-01 23:26:28 · 1265 阅读 · 0 评论 -
VS2010命令行下查看虚函数表和类内存布局
VS2010命令行下查看虚函数表和类内存布局——《深度探索C++对象模型》读书札记系列 在学习多重继承下的Virtual functions时,需要分析派生类的虚函数表(vtable),但是在网上找了好几种Hack vtable方法,结果都不尽如人意。没想到MS Compiler(以VS2010为例)有打印vtable的编译选项,真是太好了!1. 打开“Visual Studio原创 2013-05-28 00:50:09 · 7140 阅读 · 2 评论 -
“2 overloads have no legal conversion for 'this' pointer”错误
“2 overloadshave no legal conversion for 'this' pointer”错误——《深度探索C++对象模型》读书札记系列 问题:P101的代码,如下,编译出现“2 overloads have nolegal conversion for 'this' pointer”错误。class Point2d {public: Point2d(fl原创 2013-05-28 00:45:18 · 4767 阅读 · 0 评论 -
C/C++ - 数组初始化列表为空的区别
C/C++ - 数组初始化列表为空的区别 今天偶然碰到C++中数组的初始化列表可以为空,对于内置类型int,char,double以及string类型等会默认初始化,菜鸟的我颇为惊讶。而把后缀名换成.c,在C编译器(VS2010)中编译报错。这应该是C和C++关于数组初始化的一点不同之处吧,记下来吧。测试代码,如下#include void main(void)原创 2013-04-28 22:37:11 · 5294 阅读 · 0 评论 -
[转载]彻底搞定C指针-函数名与函数指针
这篇文章把函数名和函数指针讲述很好,方面日后查阅,转载一下~~转载地址:http://blog.pfan.cn/whyhappy/6030.html函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(in转载 2013-04-14 16:53:20 · 822 阅读 · 0 评论 -
C - 结构体字节对齐问题
C - 结构体字节对齐问题 关于C语言中的结构体字节对齐问题,在《C与指针》一书中提到,但是似乎没有说清楚,还是我理解不完全?所以,根据书上和网上资料,总结一些关于C语言中的结构体字节对齐的知识。这里的讨论和代码,都在VS2010下,GCC不太熟悉就不说了;-( (1)什么是字节对齐[1]对齐规则: 结构体中一个变量占用 n 个字节,则该变量的原创 2013-04-14 13:49:23 · 3132 阅读 · 0 评论 -
浅析extern “C”的作用
浅析extern “C”的作用 关于extern “C”的作用和意思,网上资料已经有很多了(我也参考了几篇),不过我还是觉得有必要自己总结一下,毕竟“好记性不如烂笔头”嘛~~ 到C标准函数库的头文件里看看,一般会经常看见有如下宏定义(除非你从来没有查看类似printf函数在头文件中的定义,就另当别论了:-()#ifdef __cplusplusex原创 2013-04-08 23:51:16 · 12702 阅读 · 0 评论 -
C的序列化库tpl的使用
C的序列化库tpl的使用 coolshell推荐了一个好用的C的序列化库(http://coolshell.cn/articles/878.html),于是下载来试试,下载地址:http://troydhanson.github.com/tpl/index.html,解压tpl-master.zip,到doc目录看看使用文档,在Windows有3种方式使用这个库。原创 2013-04-06 14:30:08 · 4441 阅读 · 0 评论 -
C程序中修改Windows的控制台颜色
C程序中修改Windows的控制台颜色 其实,Windows的CMD可以和Linux下的终端一样可以有五颜六色,目前我在网上找到2种方法可以修改Windows的CMD,当然都是在代码中修改的。在“CMD”->“属性”->“颜色”,这种方法就另当别论了。 (1)方法一:调用color命令行程序Windows的CMD中有个color命令,它可以修改控制台的原创 2013-01-10 14:32:39 · 20930 阅读 · 0 评论 -
使用static关键字隐藏函数 [C]
使用static关键字隐藏函数 [C] C语言中没有C++的public、private等关键字来限定函数的使用范围,也没有类的概念可以使用相同名字的函数。但是在C语言中使用static关键字可以达到函数隐藏的目的。下面有个简单的例子。清单1 –hide_function.h#ifndef _HIDE_FUNCTION_H_#define _HIDE_FUNC原创 2013-01-06 22:39:06 · 2620 阅读 · 0 评论 -
assert的实现原理浅析
assert的实现原理浅析assert在调试中经常用到,它包含在assert.h文件中(我用的编译器是VS2010)。实际上,它是一个宏,定义如下1#define assert(_Expression) (void)( (!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT原创 2013-10-16 15:14:07 · 3549 阅读 · 0 评论