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:
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:
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; |