C/C++
临兵斗者1997
我现在所做的一切,不过是想真正站在巨人的肩膀上
展开
-
条件编译 #if #endif #ifdef等
最近在看C++项目,发现项目里添加了好多#if等符号,查了一下,发现,他们作用不小。 所谓的#if等符号,包含#if,#elif,#ifdef,,#else,#ifndef,#endif,,总称条件编译。首先,所谓的条件编译,是指在我们书写代代码完成之后,编译之前的预编译阶段发挥作用。大体就是决定是否编译。 举个例子,如果决=决定写入,就会在对应的EXE文件中包含此代码段,否则,不会包含。值原创 2016-10-29 19:40:41 · 888 阅读 · 0 评论 -
deifne小技巧
#define STRCMP(a,R,b) (strcmp(a,b) R 0)If(STRCMP(s,==,”STRING”)) …………..原创 2017-06-08 19:56:08 · 303 阅读 · 0 评论 -
typedef 与 define的区别
typedef与define有两个关键性的区别,这会带给我们一些烦恼。但其根本区别就是typedef是个“封装”好的类型,就是在声明类型之后不能再往里面添加其他声明。区别如下:1)添加其他#define example int则: unsigned example a; 完全没有问题 typedef example int 但会报错2)连续声明#define pstr int*原创 2017-06-08 19:52:09 · 293 阅读 · 0 评论 -
C语言声明解读步骤
第一步: 找到变量标识符, 第二步: 查看标识符右边的符号:若为方括号 则表示“…的数组”。 第三步: 若为左括号:表示“返回….的函数” 第四步: 如果左边的符号是一个左括号:则应将之前已经处理过的声明结合,重复步骤二。 第五步: 如果左边的符号是const/*则表示“只读”/“指向…的指针”。 重复步骤四。 第六步: 将剩下的符作组合。原创 2017-06-07 22:56:15 · 291 阅读 · 0 评论 -
C语言声明解读步骤
第一步: 找到变量标识符, 第二步: 查看标识符右边的符号:若为方括号 则表示“…的数组”。 第三步: 若为左括号:表示“返回….的函数” 第四步: 如果左边的符号是一个左括号:则应将之前已经处理过的声明结合,重复步骤二。 第五步: 如果左边的符号是const/*则表示“只读”/“指向…的指针”。 重复步骤四。 第六步: 将剩下的符作组合。原创 2017-06-06 21:56:55 · 238 阅读 · 0 评论 -
字符输出小技巧
void fun(char *string) { static char str=' '; printf("%c %s",str,string); str=',';}转载 2017-06-06 20:18:20 · 184 阅读 · 0 评论 -
结构体内存分配
typedef struct { int len; char namestr[1]; }S;假如我们声明了这样一个结构体,在64位(32位)下,我们打印他的长度,会发现 这是因为编译器会自动分配一定空间用于对齐,因此会有无名空间。原创 2017-06-05 21:34:36 · 283 阅读 · 0 评论 -
一级指针与二级指针
指针 在C语言中,可以使用指针对变量进行操作。 一个有意思的比喻是,把变量比作一个盒子,而把指针比作一个抽屉, 那么,一个不太恰当的例子是,当你想要盒子里的东西的时候,你可以直接找到盒子,当然,也可以先拉出抽屉来,而盒子,自然在抽屉里。 下面,则是正经的干货。 int n=3; int *p=&n; 那么,他们则有如下的关系: 首先,系统会分配内存给n,假如它的地原创 2016-11-20 17:53:40 · 366 阅读 · 0 评论 -
new与delete
C++中的动态分配 在C中,我们使用malloc与free进行动态分配内存空间与释放,而在C++中,则使用new与delete进行相关操作。首先,我们来看一下他们的使用方法。 对于数组来说,定义方法为: int *p=new int[10]; delete p;而对于单个指针来说: int *p=new int; delete p;当然,int也可以替换为类对象。如: C *p=new原创 2016-11-13 20:49:19 · 230 阅读 · 0 评论 -
语句快的层次
源代码中尚未封闭的语句快的个数,可以通过左花括号减去右花括号的个数的办法来确定。原创 2017-08-05 17:01:38 · 227 阅读 · 0 评论