总会有一些混淆和不那么明确的地方,所以总结一点c++中字符串和数组的东东。
valid: int A[] = {1,2,3,4,5}; //初始化
int A[5]={1,2,3,4,5};
int A[5]={1,2}; 等效于 int A[]={1,2,0,0,0};//数组中未初始化的位置会默认为0
char* p = "abc";//ok
p[1] = 'd';//error , 指向的字符串是常量
要想改变字符串,应该这样:
char A[] = "abc";
A[1] = 'd';
对于常量串的指针是固定的:
const char* p = "abc";
const char* q = "abc";//此时的 p == q
对于空串 “” ,它的类型是const char[1]
char Alpha[] = "abcd"
"efg";
等效于 char Alpha[] = "abcdefg"; 就是说分开的串会被自动合并。
指针和数组:
char A[] = {'1','2','3','4'};
char* p1 = A;// 指向A[0]的地址
char* p2 = &A[0];//等同于 p1
char* p3 = &A[4];//指向A[3]的下一个地址
strlen(p1); //valid
strlen(A); //valid A隐式成字符串
A = p1; // invalid 不能把指针赋给数组 ,指针不会隐式转换成数组!!