字符串、指针、引用、数组基础

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);

猜你喜欢

转载自www.cnblogs.com/Bella2017/p/9540340.html