Bjarne 在他的 The C++ Programming Language 里面给出过一个助记的方法:把一个声明从右向左读

1
2
3
4
5
6
7
char * const cp; ( * 读成 pointer to ) 
cp is a const pointer to char

const char * p;
p is a pointer to const char;

char const * p;

同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。

C++标准规定,const关键字放在类型或变量名之前等价的。

阅读全文 »

常量,又叫做字面量,是固定值,在程序执行期间不会改变。

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

阅读全文 »

作用域是程序的一个区域,一般来说有三个地方可以定义变量:

  • 局部变量:在函数或一个代码块内部声明的变量。
  • 形式参数:在函数参数的定义中声明的变量。
  • 全局变量:在所有函数外部声明的变量。
阅读全文 »

变量类型

变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头,且大小写敏感。

  • bool:存储值 true 或 false。
  • char:通常是一个字符(八位)。这是一个整数类型。
  • int:整形,4 个字节。
  • float:单精度浮点值。单精度格式:1位符号,8位指数,23位小数。

v2-749cc641eb4d5dafd085e8c23f8826aa_hd.png

  • double:双精度浮点值。双精度格式:1位符号,11位指数,52位小数。

v2-48240f0e1e0dd33ec89100cbe2d30707_hd.png

  • void:表示类型的缺失。
  • wchar_t:宽字符类型。
阅读全文 »

内置类型

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t

wchar_t 定义:

1
typedef short int wchar_t;

wchar_t 实际上的空间是和 short int 一样。

一些基本类型可以使用一个或多个类型修饰符进行修饰:

20130806104900234.jpg

1. asm

asm (指令字符串):允许在 C++ 程序中嵌入汇编代码。

2. auto

auto(自动,automatic)是存储类型标识符,表明变量自动具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。

3. bool

bool(布尔)类型,C++ 中的基本数据结构,其值可选为 true(真)或者 false(假)。C++ 中的 bool 类型可以和 int 混用,具体来说就是 0 代表 false,非 0 代表 true。bool 类型常用于条件判断和函数返回值。

阅读全文 »

程序结构

C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。

实例

1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;

// main() 是程序开始执行的地方

int main()
{
cout << "Hello World"; // 输出 Hello World
return 0;
}

注意,标准库里的名字都加上 std:: 的前缀。如: std::vector

自己也可以定义一个名字空间。取名 myspace,再在这个空间里写一个 cout 函数来实现。调用时,就成了 myspace::cout

阅读全文 »

简介

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。

面向对象程序设计

C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:

  • 封装
  • 抽象
  • 继承
  • 多态
阅读全文 »

执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。

命令行参数是约定使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作:

阅读全文 »

void 的作用

  • 当函数不需要返回值时,必须使用void限定。例如:void func(int a,char *b)
  • 当函数不允许接受参数时,必须使用void限定。例如:int func(void)

void 指针的使用规则

  1. void 指针可以指向任意类型的数据,就是说可以用任意类型的指针对 void 指针对 void 指针赋值。

例如:

1
2
3
int *a;
void *p;
p=a;
阅读全文 »

C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。

*void calloc(int num, int size);

在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是0。

*void free(void address);

该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。

*void malloc(int num);

在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。

**void realloc(void address, int newsize);

该函数重新分配内存,把内存扩展到 newsize

注意:void * 类型表示未确定类型的指针。C、C++ 规定 void * 类型可以通过类型转换强制转换为任何其它类型的指针。

阅读全文 »

C 语言允许定义一个函数,能根据具体的需求接受可变数量的参数。

第一个参数都是表示被传的可变参数的总数,省略号被用来传递可变数量的参数。

1
2
3
4
5
6
7
8
9
10
11
12
int func(int, ... ) 
{
.
.
.
}

int main()
{
func(2, 2, 3);
func(3, 2, 3, 4);
}

函数 func() 最后一个参数写成省略号,即三个点号(...),省略号之前的那个参数是 int,代表了要传递的可变参数的总数。

阅读全文 »

C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。

可以在 errno.h 头文件中找到各种各样的错误代码。

所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。

在程序初始化时,把 errno 设置为 0,0 值表示程序中没有错误。

阅读全文 »