char *s;
s="China";
爲什麼char*可以賦值一個字符串呢,是因爲字符串本身就是一個地址,它是首地址的地址。
char*a[]={"China","Franch","America","German"};
[]優先級高於* 所以a先和[]結合,是一個數組,然後數組中每個元素是char*。
char*a[]={"China","Franch","America","German"};
char**s=a;
爲什麼a能賦給s,因爲數組名a代表數組元素內存單元的首地址,即a=&a[0]=0012FF38;而0x12FF38即a[0]中保存的又是00422FB8,這個地址,00422FB8爲字符串“China”的首地址.
在計算機組成中有間接尋址,這就運用了相似的原理。二級指針就是尋址兩次。
*s=0042FB8="China"
char和string的轉換
#include<iostream>
using namespace std;
int main()
{
char a[]=" abcd";
string s=a; //直接賦值
cout<<s;
}
string的特性描述:
int capacity()const; //返回當前容量(即string中不必增加內存即可存放的元素個數)
int max_size()const; //返回string對象中可存放的最大字符串的長度
int size()const; //返回當前字符串的大小
int length()const; //返回當前字符串的長度
bool empty()const; //當前字符串是否爲空
void resize(int len,char c);//把字符串當前大小置爲len,並用字符c填充不足的部分