Matriz de strings
const char *
só pode ser atribuído a um char const string * variáveis não pode ser atribuído char * variável.
const char* a = "abcde";
Adicionado automaticamente no final da matriz de cadeia '\ 0'. Para os procedimentos acima, a [5] é '\ 0', a saída está vazia, depois de um [5] pode ser indexado, se a saída é um único caractere, mas não pode determinar o que o personagem.
Você pode ser strlen utilizado () para encontrar o comprimento da corda. comprimento final não contém '\ 0' é.
cout << strlen(a) << endl;
Uma matriz de cadeias pode ser directamente saída cout
cout << a << endl;
Printf saída também pode ser usada
printf("%s", a);
printf(a);//以上两种printf都行
const char []
Ele deve ser inicializado na definição. Ele deve ser inicializado com uma string. Apenas em cadeia de inicialização pode ser atribuído, e o tempo restante não pode ser atribuído.
const char b[] = "abc";
b = "def";//错
Se a inicialização não for especificado comprimento, os padrões de comprimento de matriz para o comprimento da corda + 1, ou seja, incluindo o último comprimento '\ 0'. Se o comprimento especificado, o comprimento da matriz é o comprimento especificado, e o comprimento da corda deve ser maior do que 1 é atribuído.
Após seqüência de inicialização, todos os bits restantes são inicializados com '\ 0'.
tipo variável é const char [comprimento da matriz]. typeid disponível (nome da matriz) .name () para obter.
pode ser usado STRLEN requisitos de comprimento string. Note-se que este é o comprimento da corda, e não o comprimento da matriz. É o comprimento da corda para o primeiro '\ 0' de comprimento, não incluindo '\ 0'.
Pode ser cout diretamente de saída ou printf
cout << b << endl;
printf("%s\n", b);
printf(b);
Uma matriz de caracteres
Caracteres[]
Ele não pode ser inicializado na definição. Ele pode ser inicializado com uma string. Ela só pode ser atribuída a seqüência de inicialização, eo tempo restante não pode ser assim atribuído.
char b[] = "abc";
b = "def";//错
Se a inicialização não for especificado comprimento, os padrões de comprimento de matriz para o comprimento da corda + 1, ou seja, incluindo o último comprimento '\ 0'. Se o comprimento especificado, o comprimento da matriz é o comprimento especificado, e o comprimento da corda deve ser maior do que 1 é atribuído.
Após seqüência de inicialização, todos os bits restantes são inicializados com '\ 0'.
Pode ser inicializado a matriz vazia, então o comprimento da matriz especificado necessário.
char array[20] = { NULL };
É um tipo variável char [comprimento da matriz]. typeid disponível (nome da matriz) .name () para obter.
pode ser usado STRLEN requisitos de comprimento string. Note-se que este é o comprimento da corda, e não o comprimento da matriz. É o comprimento da corda para o primeiro '\ 0' de comprimento, não incluindo '\ 0'.
Pode ser cout diretamente de saída ou printf
cout << b << endl;
printf("%s\n", b);
printf(b);
Se dentro de uma matriz de todo o '\ 0' são excluídos, você pode cout ou printf, mas a saída será quente.
Caracteres*
char [] variável (e apontador) pode ser atribuído a variável char *.
char b[] = "abc";
char* a = b;
A cadeia não pode ser diretamente atribuído a * caractere.
char* a = "abc";//错
char * a necessidade de inicializar, ou não sabe para onde apontar, muito perigoso.
char* a;//此处写法是错误的,不能这样初始化,
//初始化时需要指向某个地址,否则指针所指地址是不明确的,容易出问题。
a[0] = 'a';//可以依次对数组元素赋值。
a[1] = 'b';
Se um char * não é inicializado, não foi atribuído, a variável de um não é definida, strlen não pode ser usado, não pode ser directamente cout saída ou printf.
Se pode ser utilizado o char * é inicializado ou atribuído a uma variável char [], strlen, o resultado é uma matriz para um primeiro '0 \' comprimento, não incluindo '\ 0'. Você também pode usar cout e saída printf diretamente.
cout << strlen(a) << endl;
cout << a << endl;
printf("%s\n", a);
Neste ponto caractere de typeid é char .
endereço ponteiro do problema
char [] aponta para o endereço de memória armazenada na string, esta constante de tempo também é armazenado área de armazenamento de cadeia de caracteres.
const char [] aponta para o endereço de memória armazenada na string, esta constante de tempo também é armazenado área de armazenamento de cadeia de caracteres.
const char * endereço constante aponta para a área de armazenamento, a corda não é armazenado na memória.
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << (str1 == str2) << endl;
cout << (str3 == str4) << endl;
cout << (str5 == str6) << endl;
O resultado é