Uma matriz de cordas ou cadeia

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 é
Aqui Insert Picture Descrição

Publicado 52 artigos originais · ganhou elogios 0 · Visualizações 681

Acho que você gosta

Origin blog.csdn.net/UniversityGrass/article/details/104681744
Recomendado
Clasificación