C++的语言品味是独特的,喜欢的人特别喜欢,讨厌的人特别讨厌.虽然Bjane Stroustrup不断地宣称C++的发展方向是新手友好的,但实际上对新手来说,最重要的还是有强大方便的标准库可以使用(像Java/C#/Python之类),让程序员们可以迅速地完成手头的工作.Bjane Stroustrup本人也看到这个问题,并经常强调强加标准库的重要性,不过好像标准委员会并没有太理会这个事,大部的提案都是围绕语言核心的. 偶尔地想了一下这个事,为什么会这样呢? 原因就是标准会从来就没有认真考虑过新…
本文讨论C语言中的存储类别,包括数据在内存的存储.变量的存储类别.函数的存储类别.生存周期.下图为计算机的存储空间,有寄存器和内存. 一.存储区域 1.寄存器:存放立即参加运算的数据. 2.系统区:存放系统软件. 3.用户程序代码区:存放用户程序的程序代码. 4.库程序代码区:存放库函数的代码. 5.数据区,分为堆区.栈区和静态存储区. (1)堆区:存放动态变量,即由malloc申请的动态变量. (2)栈区:存放自动存储类型的变量,包括函数和复合语句中的局部变量等. (3)静态存储区:存放具有显…
自增运算符++有前缀和后缀两种,在搭配间接访问运算符*时,因为顺序.括号和结合关系的影响,很容易让人产生误解,产生错误的结果,这篇文章来详细分析一下这几种运算符的不同搭配情况. ++.--和*的优先级顺序 在C语言运算符的优先级顺序中,后缀的++和--运算符运算优先级16,结合关系是从左到右:简介访问运算符*.前缀++和--运算符运算优先级15,结合关系是从右到左.根据这个关系,可以分析出不同情况下的应用.为了更直观的体现,有以下的例子. 举例说明 有数组a[5],值分别为10,11,12,13…
错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误.有如下一段简单的代码: #include "stdio.h" int main(void) { int i; printf("Input i\n"); scanf("%d", &i); printf("i is %d",…
问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系统核心沟通的途径.在windows系统中见到的桌面即explorer.exe(资源管理器)是图形shell,而cmd就是命令行shell.这算是cmd与dos的最大区别,一个只是接口.一个是操作系统.只是cmd中的…
C语言程序处理过程 预处理:宏定义展开.头文件展开.条件编译,这里并不会检查语法 编译:检查语法,将预处理后文件编译生成汇编文件 汇编:将汇编文件生成目标文件(二进制文件) 链接:将目标文件链接为可执行程序 程序只有在运行才加载到内存(由系统完成),但是某个变量具体分配多大,是在编译阶段就已经确定了,换句话说,在编译阶段做完处理后,程序运行时系统才知道分配多大的空间,所以,很多时候说,这个变量的空间在编译时就分配(确定)了. 字符串操作 1.字符串基本操作 1)字符串初始化 /* C语言没有字符…
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> void main() {     int a[4][4];     int b[4][4];     int c[4][4];     int i,j,k,s,t,m,n;     srand(time(0));     for(i=0;i<=3;i++)         for(j=0;j<=3;j…
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的JVM语言么? 如今借助来自像Xtext和ANTLR这样的工具的支持,创建一种新的语言比以前容易多了.个体编码者和群体受突破和改进现存JVM语言,以及传统Java的限制和缺陷的驱使,让许多新的JVM语言应运而生. 新的JVM语言开发者感觉他们的工作室针对现存语言的产物——现存的语言提供了太过受限制的…
本文主要站在C++程序员的思维角度思量. functional之路 lambda表达式 lambda表达式,是一段代码片段.函数实现体中出现的可重用的代码块. 在C++之前,C语言最小可复用流程模块,是函数:只有函数是用以处理不同类型数据的代码块,书写一次可多次被调用以重复利用优化设计,减少工程复杂度. C++出来之后,并没有立即改进函数设计的代码技术,而是首先由boost第三方库锻造出来的lambda支持来强化设计工作,使得在函数代码中也可以进一部优化复用代码,进一步得到简洁描述. 由后来C+…
SQLite 近日发表了一篇博文,解释了为什么多年来 SQLite 一直坚持用 C 语言来实现,以下是正文内容: C 语言是最佳选择 从2000年5月29日发布至今,SQLite 一直都是用 C 语言实现.C 一直是实现像 SQLite 这类软件库的最佳语言.目前,还没有任何计划要采用另外一门语言对 SQLite 进行重新开发. 为什么 C 语言是实现 SQLite 的最佳选择?原因主要体现在这几个方面: 性能 兼容性 低依赖性 稳定性 1.性能 像 SQLite 这类库要求速度必须要快.SQL…