Percorra o processo c++: conhecimento básico, processamento de dados, perigos de ponteiro e soluções

Tratamento básico de tipos de dados

variável simples

nome variável

    Uma variável é o nome de um objeto ou conceito de coisa em C++. Após representar algo, pode-se atribuir um valor a ela. As
    regras para declaração de variáveis ​​em C++:
①, nomes de variáveis ​​só podem ser compostos por caracteres, números e sublinhados, por exemplo: _liming123
② . O primeiro caractere de um nome de variável não pode ser um número
③, caracteres maiúsculos e minúsculos são diferenciados em C++
④, palavras-chave não podem ser definidas como variáveis, como: cout, cin, main, int
⑤, dois sublinhados ou sublinhados Nomes que começam com um caractere maiúsculo são reservados para uso de implementação. Os nomes que começam com um sublinhado são reservados para a implementação para uso como identificadores globais.
⑥, o comprimento é ilimitado, a plataforma pode ter restrições

tipo de dados

1. Inteiro
Um número sem uma parte fracionária, ou seja, um inteiro regular.
As palavras-chave inteiras básicas são: short, int, long, long long
Em circunstâncias normais, short é 16 bits, int é 32 bits, long é 64 bits, long long é 64 bits, os valores acima são incertos e estão relacionados para a versão do sistema operacional. A unidade de armazenamento geralmente usa 8 bits como byte, e o número de bytes acima pode ser obtido dividindo o número de bits por 8.
Qual é o conceito                          de 16 bits? O intervalo binário pode ser visto a partir do seguinte:
0000000000000000-0111111111111111
1000000000000000-111111111111111111
é (-2^15 ~ 2^15-1)

O tipo correspondente tem um intervalo correspondente. Uma vez que este intervalo seja excedido, o programa reportará um erro.

Exemplo de uso:

	int a=10;			//valid
	int b=65536;		//invalid (-65536~65535)
	short c=100;
	long d=1000;

2.
Tipo de caractere O tipo de caractere é um tipo de caractere, que geralmente pode ser considerado como alguns dos códigos ascii, e pode ser definido para ele e
postar um diagrama de rede:insira a descrição da imagem aqui

exemplo:

	//字符使用单引号,字符串使用双引号
	char a='%';	
	char b='a';		//1
	char c=97;		//b与c一样,字符‘a’前面十进制数字,可以直接给char变量

3. Números de ponto flutuante
Os tipos de números de ponto flutuante são: float, double, long double
float32 bits; double64 bits, pelo menos 48 bits e maior que float; long double pode ser 80, 128, etc., pelo menos maior que o dobro;

	float a=123.456f;	//可以在数字后面加上类型首字母,表示是这个类型的变量
	double b=123.456f;
	long double c=123.456l;
	long int d=123l;

O sinal por trás do valor é para permitir que o programador veja que tipo de variável é a variável olhando para o valor. Na programação em larga escala, se você declarar uma variável, ela será atribuída ou modificada em um local distante.É muito bom se você puder ver seu tipo através da atribuição feita por outros não muito distantes.

4. Tipo booleano
O tipo booleano é a variável declarada pela palavra-chave bool.Se for declarado o tipo bool, existem apenas duas opções para atribuir um valor à variável, uma é verdadeira e a outra é falsa. Ou 1 e 0; geralmente usado para julgamento

constante

Uma constante geralmente se refere a uma quantidade constante e imutável. Durante a execução do programa, uma constante não pode ser alterada.
A linguagem C geralmente usa o método de pré-processamento **#define**, também chamado de definição de macro, o método de pré-processamento também é chamado de pré-compilação e a operação é concluída antes da compilação. O valor definido também é uma constante, conforme mostrado abaixo, o método de definição de macro:

	#define Max 100		//中间空格,没有分好

C++ fornece um método de processamento melhor: o qualificador const, que é usado da seguinte forma:

	//const type name=value;
	const int Max=100;

variável complexa

variedade

Método de declaração: digite nome[comprimento];
exemplo

	int a[10];
	char b[20];
	double b[];		//也可不填

Claro, arrays também são uma forma de armazenar dados, então como armazená-los?

	for(int i=0;i<10;i++){
    
    
		a[i]=i;			//a数组从0-9,填的也是0-9
	}
	int b[5]={
    
    1,2,3,4,5};
	char c[5]={
    
    'a','b','c','d','f'};

corda

1. A diferença entre um caractere e uma string é que existe um '\0' após o caractere, por exemplo:

	char a[5]={
    
    'a','b','c','d','f'};	//普通字符数组,不是字符串
	char b[5]={
    
    'a','b','c','d','f','\0'};	//字符串
	
	//字符串常规形式
	char c[5]="abcdf";

2. A classe string
declara o arquivo de cabeçalho #include<string> antes de usar e pode usar string diretamente para declarar variáveis ​​ao declarar

	#include<iostream>
	#include<string>
	using namespace std;
	
	int main(){
    
    
		string name="zhangsan";		//声明方式
	}

3. Outros tipos de string
wchar, char16_t (16 bits), char32_t (32 bits), Raw (string bruta)

estrutura

Bit de chave de declaração de struct: struct, então use o exemplo

	struct student{
    
    
		char name[20];
		int age;
		char sex;
	}stud{
    
    
		"黎明",
		43,
		'm'
	};				//不太使用这种初始化变量,分开比较清晰
	
	struct Teacher{
    
    
		char name[20];
		struct student stu[50];
		double wages;
		char course[10];
	};

	int main(){
    
    
		student s;
		Teacher teacher;
		teacher.stud[0]=stud;
		teacher.stud[1]=s;
		teacher.wages=10;
		teacher.course="数学";
		teacher.name="李四";
	}

Comunidade

Union (união) é outra estrutura de dados especial, a função principal é economizar memória, como economizar memória? , o código de uso é o seguinte:

	union ab{
    
    
		int age;
		char *name;
		double length;
	};

	union ab exam;
	int main(){
    
    
		//调用方式与结构体相同
		cout<<exam.age<<exam.name<<exam.length<<endl;
	}

O uso é basicamente o mesmo que a estrutura.
As variáveis ​​definidas na união, não importa quantas variáveis ​​existam, estão todas em um espaço de armazenamento, então apenas uma variável pode ter um valor, e os outros valores armazenados serão perdidos porque não há espaço de armazenamento.
Vamos dar um exemplo:

	int main(){
    
    
		union ab exam;
		
		exam.age=10;
		exam.length=20;
		exam.name="张三";
		cout<<exam.age<<" "<<exam.name<<"  "<<exam.length<<endl;
	}

O resultado é o seguinte:
insira a descrição da imagem aqui
os valores atribuídos anteriormente são todos substituídos posteriormente, portanto, todos são perdidos.

Na direção incorporada geral, a memória não é grande, mas o programa precisa ser executado normalmente e o uso da memória precisa ser continuamente reduzido, e a comunidade do sindicato pode ser útil.

ponteiro

1. O array mencionado acima pode ser usado como um ponteiro. O método de configuração do ponteiro:
                                          type *name=value;

	int *p;
	int a=10;
	p=&a;		//*p是一个值,p是一个地址,&a是一个地址

	while(p++);		//地址向后推

2. O perigo dos ponteiros
Como os ponteiros precisam de um local para armazenar e os dados precisam de um local para armazenar, a variável de ponteiro declarada tem apenas seu próprio local de armazenamento, mas onde está o valor da variável? Se o endereço apontado pelo ponteiro não for inicializado, aparecerá um bug bem escondido, como segue

	int *p;
	*p=1001;		//1001存到了何处?谁也不晓得

Existem duas soluções, uma é inicializar o endereço da variável antes de cada uso e atribuí-lo como 1.
Outra forma de usar new para criar memória, o código é o seguinte:

	int *a=new int;		//创建了一个内存地址,使得指针a指向该内存区域
	*a=100;				//100存到了创建的内存空间里

O código acima deve considerar a liberação de memória, então o segundo perigo dos ponteiros aparece. A exclusão usada pelo C++ é liberada, mas depois que o espaço de memória é liberado, o ponteiro ainda existe (os entusiastas da escalada prendem o gancho de ferro na rocha acima para subir, mas após a exclusão, a rocha se foi, e quanto ao gancho de ferro e gente? ), assim que esse ponteiro for usado novamente haverá problemas.
Ele precisa apontar para NULL antes do lançamento e excluir em c++ é seguro para uso com ponteiros nulos. ( Antes que a pedra desapareça, o anzol deve enganchar outras pedras antes que a pedra no anzol desapareça )
O código é o seguinte:

	*a=NULL:
	delete a;

Loops e Expressões Relacionais

ciclo

1. For loop
Use a forma: for (inicialização; teste; operação de atualização) {body}

	//形式:
	int i;
	for(i=0;i<10;i++){
    
    cout<<"第"<<i+1<<"次"<<endl;}
	
	//形式二
	int j=0;
	for(;j<10;j++){
    
    cout<<"第"<<j+1<<"次"<<endl;}

	//形式三
	for(int i=10;i;i--){
    
    cout<<"第"<<i+1<<"次"<<endl;}

2. O loop while e o loop do...while
O loop while usa a forma: while(condição){corpo;} Se a condição for 1, o loop será executado até que a condição seja 0 e o loop será interrompido. loop do...while
usa a forma: do{body;}while (condição); Executa primeiro o corpo do loop. Após a conclusão da execução, se a condição ainda for 1, continue o loop. Se for 0, pare o loop laço.

3. break and continue
break: pare o corpo do loop desta camada continue: pare este
código do loop explicação:

	//break 演示
	for(int i=0;i<5;i++){
    
    
		for(int j=0;j<5;j++){
    
    
			if(j==2)break;
			cout<<j<<" ";
		}
	}			//j循环一旦j==2时,就会打断该循环
	//所以结果应该是:0 1 0 1 0 1 0 1 0 1		
	
	//continue 演示
	for(int i=0;i<5;i++){
    
    
		for(int j=0;j<5;j++){
    
    
			if(j==2)continue;
			cout<<j<<" ";
		}
	}			//一旦j=2,则j==2的循环就结束了,不会再执行cout<<j<<" "
//结果应该:0 1 3 4 0 1 3 4 0 1 3 4 0 1 3 4 0 1 3 4

expressão

prioridade operador significado uso
1 () Parênteses
1 [ ] operador subscrito
1 -> . operador membro struct a->idade;a.idade
2 lógico NÃO a=0;se(!a)
2 ~ inversão bit a bit ~100
2 ++ Auto-adicionado i++ primeiro uso e depois adiciono, ++i primeiro adiciono e depois uso
2 - - Decrementar idem
2 & caractere de endereço &name obtém o endereço do nome
2 (tipo) tipo de conversão (int)idade
2 tamanho de comprimento tamanho(char)
2 - negativo -5
2 * ponteiro *p
3 * pegar 1*2
3 / remover 2/1
3 % mofo 5%3=2
4 + adicionar 5+3=8
4 - reduzir 5-3=2
7 == igual if(2==1)quebra;
7 != não igual a if(2!=1)quebra;

Acho que você gosta

Origin blog.csdn.net/wangzhiyu12/article/details/107143574
Recomendado
Clasificación