1.字符串:
 字符是由单引号所括住的单个字母、数字或符号。若将单引号改为双引号,该字符就会变成字符串。它们之间主要的差别是:双引号的字符串“A”会比单引号的字符串’A’在字符串的最后补上一个结束符’\0’(Null字符,ASCLL值为0)。
 两种方式创建字符串:
 1)字符串数组:
 char str1[ ] = “This is a test ! “;
 2)声明String类
 #include<string>
 string str2 = “This is a test ! “;
  2.指针
 1)取地址符:&
 &变量名称;  //获得变量所在的内存地址
 2)指针变量:
 用来存储内存地址的变量。
 数据类型 *指针变量 = &变量名称;
 3)指针数组:
 一维指针数组的声明格式:
 数据类型 *数组名[元素名称];
 过去以二维的字符数组来存储字符串数组:
 char name[4][10] = {“Justinian”, “Momo”, “Becky”, “Bush” };
 现在可以改为声明一维字符串指针数组://将指针指向各个字符串的起始地址,如name[0]指向字符串“Justinian”
 char *name[4] = {“Justinian”, “Momo”, “Becky”, “Bush” };
  3.动态分配
 内存在运行阶段分配,若指向动态分配内存空间的指针,在未释放该地址空间前又指向了别的内存空间,则原指向的内存空间将无法被释放,从而造成内存泄露。
 1)动态分配变量:
 声明格式:
 数据类型 *指针变量 = new 数据类型(初值);
 如:
 int *ptr = new int;
 delete ptr;
 2)动态分配数组:
 int *ptr = new int[ nop ];    //动态分配数组为nop个元素
 delete []ptr;
  4.引用
 int j = 20;
 int &refj = j ;   //声明引用需使用取地址符号&,并且同时设置初值
 注意:当refj成为j的别名后,就不能再将refj这个标识符重复声明为其他变量或对象的别名,并且所用作用于refj身上的运算处理都会同时作用到j身上。
  5.指针引用
 将引用的初值指向某个指针变量的地址。
 如:
 int Arr[3] = {1,2,3}; int* PtrArr = Arr; //声明指针变量PtrArr,并指向数组Arr的起始地址 int* &refArr = PtrArr; //声明指针引用refArr,来指向PtrArr for(int i=0;i<3;i++)cout<<*( refArr+i )<<“ “; cout<<endl;
#include <iostream> #include <cstdlib> usingnamespacestd; intmain(intargc, constchar* argv[]) {// insert code here...charName[] = "John";char*p_N = "Marry"; //定义字符串指针 *p_N 并设置其初值cout<<"Name[]的地址:"<<&Name<<" 字符串的内容:"<<Name<<endl;//由于传递字符指针给cout会直接显示出字符串,故使用强制类型转换(int *)来显示指针变量*p_N所指向的地址cout<<"p_N的地址:"<<(int*)p_N<<" 字符串的内容:"<<p_N<<endl;return0; }
6.获取数组长度
 int arr[] = {1,5,9,10,9,2};
 length_arr = sizeof(arr)/sizeof(arr[0]);
 len_arr = end(arr)-begin(arr);