标签:
1. 内存分配:
C++里面使用new delete
注意:
#include <iostream> #include"stdlib.h" using namespace std; int main(int argc, char *argv[]) { int* p=new int(5); //申请了一个数组大小的堆空间,数组中的元素为int类型,元素个数为5。 int* q=new int[5]; //申请了一个数组大小的堆空间,数组中的元素为int类型,元素个数为5。 int** elements=new int*[10]; //new 类型(值):申请堆空间的同时将值存入堆空间。 //new 类型[值]:申请数组大小的堆空间,类型为数组堆空间中每个元素的类型。 for (int i=0;i<5;i++) { scanf("%d",&q[i]); printf("%d\n",q[i]); } delete p;//释放p所指向的堆空间 p=NULL;//防止出现野指针 delete []q;//释放q所指向的数组 堆空间 q=NULL;//防止出现野指针 return 0; }
2. const关键字
#include <stdio.h> int main(int argc, char *argv[]) { const int x=2,y=3; int z=3; const int* pc=&x;//不合法:x=10 *pc=10 //pc不可以做左值(即:不可以通过指针间接对指针指向的数据进行修改)但是pc本身的值是可变的。 //int const* pc:值可以变化, 不合法:*pc=10; int const* pc1=&y;//const修饰*pc1 *pc1不可以做左值 pc1=&z;//pc1指向变量z 指向常量的指针<=>常量指针 int* const pc2=&z;//const修饰pc2 pc2不可做左值(即pc2的指向不能变化) *pc2=20; //可以 指针不可变但是可间接修改指针所指向的数据。 printf("%d",*pc2); return 0; }
字符串替换:
#include <stdio.h> //形参用const修饰有什么好处:可以防止通过形参修改指向的数据,增强程序的健壮性 void space_to_dash(const char* str) { while (*str) { // ‘\0‘:字符串的结尾标志 if(*str==‘ ‘) printf("%c",‘-‘); else printf("%c",*str); str++; } } int main(int argc, char *argv[]) { space_to_dash("Hello world!"); return 0; }
3. 引用:取别名
例:int i; int &j=i; 声明一个引用j(即给变量i取了别名为j)
引用必须在声明的同时进行初始化。
好处:可以节省空间
4. 作用域:
文件域、函数域、块域
全局变量:不属于任何函数体的变量
静态全局变量与普通全局变量:两者都在全局、静态数据区 生命周期相同。不同:静态全局变量只能在当前文件中使用,普通的全局变量可以在任意一个文件中通过extern关键字使用。
在不同的的作用域中可以定义同名变量。
系统不会给引用分配空间。
标签:
原文地址:http://www.cnblogs.com/cai1432452416/p/5216243.html