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