![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
_逸之
专注计算机科普,约稿、合作请私信。
简书:https://www.jianshu.com/u/af8d5ddcb7c5
知乎:https://www.zhihu.com/people/yizhi-in-computer
展开
-
[C/C++] const和#define的区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。 const常量会在内存中分转载 2014-06-15 14:36:32 · 523 阅读 · 0 评论 -
[C] 数组另类写法
int a[] = {1,2,3};printf("%d",2[a]);原创 2014-06-19 20:17:59 · 644 阅读 · 0 评论 -
[C] sizeof居然不是函数是运算符
C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。转载 2014-06-22 19:34:40 · 762 阅读 · 0 评论 -
[C] 可变参数
1 使用:一直以来习惯了使用printf函数,但是对于可变参数没有深入研究过,觉得可变参数是一个神奇的技术^0^。。。工作闲下来的时候,想研究研究看可变参数的使用和原理。目前C提供的可变参数的申明为void function(const char *format, ...);这样就可以在function中使用可变参数C提供了几个宏用于使用可变参数va_listva_转载 2013-10-10 19:20:19 · 750 阅读 · 0 评论 -
[C] 三字符序列
#include void main(){ int i = 1; //结果是多少??/ i = 100; printf("%d",i);}最后打印出来的结果绝对亮瞎你眼,原创 2014-06-15 15:44:59 · 866 阅读 · 0 评论 -
[C] 结构体中的伸缩型数组成员——《C Primer Plus》
《C Primer Plus》第五版P398~399转载 2014-06-23 16:25:07 · 866 阅读 · 0 评论 -
[C] 副作用和顺序点——《C Primer Plus》
《C Primer Plus》第五版P103~104转载 2014-06-22 19:52:51 · 856 阅读 · 0 评论 -
[C++] 使用C++的三条建议——《C陷阱与缺陷》
P172提问:最后一个问题,我们都希望成为更好的C++程序员。请给我们三个你们认为最重要的建议,好吗?Koenig&Moo:1. 避免使用指针;2. 提倡使用程序库;3. 使用类来表示概念转载 2014-09-04 16:09:24 · 894 阅读 · 0 评论 -
[C++] new带括号和不带括号
在new对象的时候有加上(),有不加(),不知道这个到底是什么区别?比如:CBase *base = new CDerived();CBase *base = new CDeviced; 很多人都说,加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数。这是有问题的。对于自定义类类型: 如果该类没有定义构造函数(由编译器合成转载 2014-10-09 11:12:40 · 1290 阅读 · 1 评论 -
[笔记] 《C++ Primer Plus(第6版)》
[第一章]意大利面式编程(FORTRAN、BASIC)→结构化编程(C)→面向对象编程(C++)→泛型编程(C++)结构化编程反应了过程性编程思想,两个原则:将分支(决定接下来应执行哪个指令)限制为一小组行为良好的结构;自顶向下的设计。过程性编程 OOP 泛型编程强调算法 强调数据 强调独立于特定数据类型试图使问题满足语言的过程性方法 试图让语言来满足问题的要求提供原创 2014-11-24 14:08:31 · 867 阅读 · 0 评论 -
[笔记] 《C专家编程》
P24:尽量不要在你的代码中使用无符号类型,以免增加不必要的复杂性。只有在使用位段和二进制掩码时,才可以用无符号数。P61:参数在传递时首先尽可能地存放到寄存器中(追求速度)。一个int型参数一般会被传递到寄存器中,而结构参数则很可能被传递到堆栈中。P61:在典型情况下,并不会频繁地对整个数组进行赋值操作。但是如果需要这样做,可以通过把它放入结构中来实现。原创 2014-10-16 10:08:37 · 570 阅读 · 0 评论 -
[笔记] 《C++ Primer(第4版)》
[第2章 变量和基本类型]事实上,有些机器上,double类型比float类型的计算要快得多。long double则通常没有必要,还要付出额外的运行代价。原创 2015-03-23 11:34:24 · 481 阅读 · 0 评论 -
[C] realloc详解
最近在写source code时需要在数组的buffer小时重新申请一块buffer,故找了一些资料,乖乖,竟然原指针还可以“漂移”。。。。。。realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include 有些编译器需要#include 功能:改变mem_address转载 2014-06-18 09:53:04 · 948 阅读 · 0 评论 -
[C] (++a)*(a++)+(++a)的值是多少?
杨开城《白话C语言》P81:原创 2014-06-15 14:56:29 · 849 阅读 · 0 评论 -
[C] 随机数(待丰富)
C/C++的rand()函数生成0~RAND_MAX之间的随机整数(RAND_MAX定义在stdlib.h,其值为2147483647),但并未真正意义上的随机数(实际上每次运行的结果都一样)。需要在之前调用srand()设置随机数种子,一般可选用getpid()或time(0)的返回值做种子:getpid()返回当前进程的识别码,需#include time(0)返回当前的系统时原创 2014-02-27 15:48:08 · 610 阅读 · 0 评论 -
[C] printf()和scanf()的*修饰符——《C Primer Plus》
《C Primer Plus》第五版P81~82转载 2014-06-22 19:39:17 · 853 阅读 · 0 评论 -
[C] 可变宏——《C Primer Plus》
《C Primer Plus》第五版P454~455转载 2014-06-23 16:44:30 · 1043 阅读 · 0 评论 -
[C] 类型限定词volatile——《C Primer Plus》
《C Primer Plus》第五版P347转载 2014-06-23 09:10:19 · 712 阅读 · 0 评论 -
[C/C++] __declspec(dllexport):从DLL导出
.DLL 文件的布局与 .exe 文件非常相似,但有一个重要的差异:DLL 文件包含导出表。 导出表包含 DLL 导出到其他可执行文件的每个函数的名称。 这些函数是 DLL 中的入口点;只有导出表中的函数可由其他可执行文件访问。 DLL 中的任何其他函数都是 DLL 私有的。 通过使用带 /EXPORTS 选项的 Dumpbin 工具,可以查看 DLL 的导出表。有两种从 DLL 导出转载 2014-09-05 09:36:12 · 1852 阅读 · 0 评论 -
[C] 头文件应包括的内容——《C语言点滴》
不在头文件中定义申请内存的变量或函数,只声明之,头文件应包括:#ifndef...#endif语句宏定义struct、union、enum的typedef全局变量(用extern)及函数声明转载 2014-07-04 11:31:49 · 652 阅读 · 0 评论 -
[C] 文件I/O内幕——《C Primer Plus》
《C Primer Plus》第五版P367转载 2014-06-23 10:01:30 · 724 阅读 · 0 评论 -
[C] 存储类——《C Primer Plus》
《C Primer Plus》第五版P332~333转载 2014-06-23 08:40:55 · 635 阅读 · 0 评论 -
[C] 复合文字——《C Primer Plus》
《C Primer Plus》第五版P276~278转载 2014-06-23 07:56:47 · 987 阅读 · 0 评论 -
[C] 可变参数——《Head First C》
转载 2014-09-20 15:13:28 · 646 阅读 · 0 评论 -
[C] 关键字restrict
概括地说,关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。举个简单的例子int foo (int* x, int* y)...{*x = 0;*y = 1;return *x;}转载 2014-06-18 19:41:25 · 534 阅读 · 0 评论 -
[C] 回调函数
程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法转载 2013-10-10 19:14:48 · 643 阅读 · 0 评论 -
[C++] Excel文件读写
一种笨重的方法是通过起Excel进程调用其库接口进行文件读写,但机子上万一没装Office或者移植时Office的版本、路径不同都有可能带来不兼容性。所幸Excel文件格式是开放的,可以根据其格式直接进行读写,机子上也不需要安装Office,BasicExcel就是这么一款方便好用的工具,对Excel的格式操作进行了封装。问题是BasicExcel不支持中文,有人添加了对中文文件路径的支持原创 2015-07-17 11:28:31 · 892 阅读 · 0 评论