C/C++

生态与开发环境

C语言的特征与应用场景 C语言是种古老的语言,其相对于现在流行的语言来说,有几个特征: 1) 对于同样的程序逻辑,其C语言实现的性能是非常高的,通常仅次于汇编语言(ASM); 2) C语言通常会被直接编译成目标机器与操作系统下的程序,中间没有解释器和虚拟机; 3) C语言没有内置面向对象(OOP)语法,但其提供了跟Class有点像的结构体类型。如果真的想要在C语言下进行OOP,往往需要间接的通过一些其他的软件设计方法; 4) C语言离机器与操作系统更近,比方说C语言直接对程序员提供了内存模型; 5)  具有一定的跨机器与跨系统移植的能力,但仅限于源码级。比如相比Java的“1份代码,1次编译,n处运行”,C最多只能“1份代码,n处编译,n处运行”; 6) 开发效率较低,同样的逻辑C语言的代码量可能是Java的几倍,是Python的几十倍;… 阅读全文

HELLOWORLD程序

HelloWorld程序 给出C语言下的Hello,World程序hello.c。这个程序也会作为计算机系统中的分析案例。 C #include <stdio.h> int main(void) { printf("hello,world\n"); return 0; } 12345 #include <stdio.h>int main(void) {  printf("hello,world\n");  return 0;} 通过GCC编译器的命令“gcc ./hello.c”就可将代码编译为当前操作系统下的可执行文件“a.out”。然后通过命令“./a.out”就可执行它,其结果是在终端打印“hello,world!”。代码中的main函数是一种ANSI C标准给出的约定,其约定C程序执行入口是名叫main的函数,并且其返回值类型是int。main可以接受参数也可以不接受参数,接受参数的一种用法是接受执行时Shell传入的参数。… 阅读全文

变量、常量、作用域

变量 C语言是一种静态类型的语言,其在初始化变量时需要指定变量的类型,但其在语法层面不要求在变量初始化时必须赋值。比方说“int a”和“int a = 1”都是合法的变量初始化语法,在初始化后可以为变量再次的赋值。C语言中的变量分为如下几种: 1) 全局变量:不在花括号内的变量; 2) 局部变量:花括号内的变量; 3) 形式参数:函数传入的参数;   作用域 C语言的作用域靠花括号区分   C语言初始化新的变量是使用“int a = 1”这样的语法,这样的语句前还可以加入const关键字,这可以把a声明为常量,即执行完“const int a = 1”后a的值将不允许被改变。C语言中还有另一种“实现常量”的方式,就是利用预处理指令#define。比如“#define A 1”可以实现在程序中加入等于1的常量A。这两种方式的区别是const是程序的一部分,而#define不能算是程序的一部分,其会在非正式编译的预处理阶段把代码中的A换成1,然后再进行后续的正式编译。

基本数据类型

基本数据类型 — 空类型 C语言中的void关键字用于描述“没有具体类型或是没有内容”,其有3种常见使用场景: 1) 用于定义函数时说明其无返回值 (比如void f(int x,int y)的语法); 2) 用于定义函数时说明其没有参数(比如int f(void)的语法); 3) 用于定义无类型指针,可以指向任何类型的数据(void *p的语法);   基本数据类型 — int类型 整数(integer/int)类型由int关键字与long/short/unsigned组合而成。下面举例说明: 1) int:C90规定int取值范围至少为-32768~32767。这里的“至少”令人费解,因为在制定标准时考虑了对未来存储的兼容,在不同的机器/操作系统/编译器上,int可能允许更大范围的整数,比如在64位机器上,int会比16位机器的范围大;… 阅读全文
滚动至顶部