MVS 2015 C++学习

常用C++新建工程类型:

ATL项目:COM相关,主要用于写插件 生成DLL文件

CLR项目:类似java虚拟机

MFC:微软提供的一套基础库 可以生成exe,dll

WIN32 :exe,dll,控制台类型等等 (类似windows cmd)

函数:

形参和实参:函数声明定义的时候,没有申请空间的参数模子

int functionname (int x, int y) { 声明部分,执行语句 }             x,y 形式参数列表

递归调用 案例:getage

全局变量: 定义在全局的位置中,值在main和其他函数中都可以调用,可以被修改。

局部变量:有作用域 定义在函数(包括Main)内的 就是局部变量;不同定义域内的变量名可以重复

当有多个cpp文件,在其他cpp文件中需要使用全局变量时,需要声明 extern type globalvar(extern 类型 全局变量名称)

多文件共同访问一个全局变量: 在一个cpp文件中定义全局变量后,在header文件中声明(注意不要直接赋值定义),在需要使用的cpp文件中包含header

static 静态类型 只初始化一次 之后就直接用它上一次的值

数组定义: 类型 数组名【常量表达式】 int apple[10] = {0} 代表有10个元素 0~9 定义时,无初值就先赋0.注意数组的越界问题  如果后来要扩展,用new 

字符‘a’ 'b' 字符串“asf” 字符串的结尾有/0(结束符)

地址和指针:定义什么类型的指针就只能指向什么类型的变量。指针本身也是变量,它的内容是某个变量的地址。&取地址符 指针变量也有地址 &p 为指针变量的地址

p 的值是某个变量的地址 *p 的内容是某个变量的值

数组和指针。数组名即数组首地址,定义一个指针指向数组首地址,*arrayp = array 

面向过程:函数是构成程序的基本单位

面向对象:对象有属性和行为构成 将程序分成不同的彼此有联系的多个对象。数据就是对象的属性,函数即是功能/行为。

对象封装:整理将一个对象的相关属性和行为封装在对象之中,形成一个基本单位 

抽象,抽象就是归类,类就是对象的抽象。类的具体表现形式。

结构体变量给函数传递参数的时候也是按照值传递的方式。 struct Stufent{ string name; int num;}

函数值传递:void swap(a,b){...}  swap(x,y)x=1,y=2

 调用swap时,为a,b分配空间,再将x和y的值复制给a,b ,进行交换。但此时对真正需要的x,y并无任何操作。

所以要用指针传递,传递地址 void swap(int *a,*b) void(Student* num)

枚举类型:一个变量只能有几种可能的值 

枚举类型的声明: enum ESex{ hello,hi}; 逗号间隔;枚举元素按常量处理,初始默认赋值为0,1,2... 声明的时候可以赋值,之后不能对枚举元素进行赋值。可以用于等号右边的计算;用于switch case; 可以在结构体里面定义一个成员变量为枚举类型 

typedef unsigned int uint;只是声明一个新的类型名字 来代替 已有的类型


引用,只有声明,没有定义。先有一个变量,再对该变量建立一个引用。 

a = 5;  int &b =a;  跟在类型后面的& 即为引用。 b是a的一个引用。也可以继续,建立引用的引用 int &c=b;  int*p= &b 建立引用的指针。在声明时,为b开辟了一个指针型的存储单元,内容是a的地址

3.13

new 和 delete 动态分配内存:new 和 malloc 相似,不主动delete ,会一直存在。某些变量受到函数作用域的限制,使用new 分配则内存一直存在。


//C语言使用malloc申请一个int类型变量的内存

int* p = (int*)malloc(sizeof(int)); 

*p=5;free(p);


C++中使用new和delete       new操作符返回的是一个指针。

int* p = new int(4);  new申请完后还会调用其构造函数。

delete(p);

//数组

int *p111 = new int[10];

p111[0] = 2;

delete[] p111;


使用技巧

1. 保留关键字,定义变量时避免使用

2. 工程目录下 debug/release文件可以删除 *.pch 

你可能感兴趣的:(MVS 2015 C++学习)