Artigo Diretório
Um, a matriz
A chamada matriz é uma coleção na qual os elementos de dados do mesmo tipo são armazenados
Características:
-
Cada elemento de dados na matriz éO mesmo tipo de dados
-
A matriz é composta porLocalização de memória contíguaconsiste em
-
Podemos passarSubscritoPara acessar os elementos da matriz, o subscrito do elemento da matriz começa em 0
1. Matriz unidimensional
1.数据类型 数组名[ 数组长度 ];
2.数据类型 数组名[ 数组长度 ]={
值1,值2...};
3.数据类型 数组名[ ] = {
值1,值2...};
Finalidade do nome da matriz unidimensional:
-
Conte o comprimento de todo o array na memória: sizeof (nome do array)
-
Obtenha o primeiro endereço do array na memória: cout << nome do array << endl;
Exemplo: Veja o comprimento da matriz e o primeiro endereço da matriz
#include<iostream>
using namespace std;
int main()
{
int arr[] = {
1,2,3,4,5,6 };
cout << "整个数组所占内存空间:" << sizeof(arr) << endl;
cout << "每个元素占用内存空间: " << sizeof(arr[0]) << endl;
cout << "数组中元素个数:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "数组在内存中的首地址:" << arr << endl;
cout << "数组中第一个元素地址:" << &arr[0] << endl;
cout << "数组中第二个元素地址:" << &arr[1] << endl;
system("pause");
return 0;
}
Resultado de saída
Tipo de bolha
O algoritmo de classificação mais comumente usado para classificar os elementos na matriz
prática:
-
Compare os elementos adjacentes, se o primeiro for maior que o segundo, troque-os dois
-
Faça o mesmo trabalho para cada par de elementos adjacentes e encontre o primeiro valor máximo após a execução
-
Repita as etapas acima, o número de comparações -1 de cada vez, até que nenhuma comparação seja necessária
O número total de rodadas de classificação = o número de elementos - 1 O número de
comparações em cada rodada = o número de elementos - o número de rodadas de classificação - 1
Análise de caso
Dado um conjunto de dados {4,2,8,0,5,7,1,3,9}, classifique-os em ordem crescente de acordo com o método de classificação por bolha
Exemplo
#include<iostream>
using namespace std;
//利用冒泡排序进行升序排列
int main()
{
int arr[] = {
4,2,8,0,5,7,1,3,9 }, count, i, j, num;
count = sizeof(arr) / sizeof(arr[0]);
cout << "给出一组数:" << arr[0];
for (i = 1; i < count; i++)
{
cout << ","<< arr[i];
}
cout << "\n对这组数进行升序排列" << endl;
for (i = 0; i < count-1; i++)
{
for (j = 0; j < count-i-1; j++)
{
if (arr[j] > arr[j + 1])
{
num = arr[j+1];
arr[j+1] = arr[j];
arr[j] = num;
}
}
}
cout << "利用冒泡排序进行升序排列后:" << arr[0];
for (i = 1; i < count; i++)
{
cout << "," << arr[i];
}
cout << "\n";
system("pause");
return 0;
}
Resultado de saída
(2) Matriz bidimensional
1.数据类型 数组名[ 行数 ] [ 列数 ];
2.数据类型 数组名[ 行数 ] [ 列数 ] = {
{
数据1,数据2},{
数据3,数据4} };
3.数据类型 数组名[ 行数 ] [ 列数 ] = {
数据1,数据2,数据3,数据4};
4.数据类型 数组名[ ] [ 列数 ] = {
数据1,数据2,数据3,数据4};
O objetivo do nome da matriz bidimensional:
-
Veja a memória ocupada por uma matriz bidimensional
-
Obtenha o primeiro endereço de uma matriz bidimensional
Exemplo
#include<iostream>
using namespace std;
int main()
{
int arr[2][3] = {
{
1,2,3},
{
4,5,6}
};
cout << "二维数组占用内存空间为:" << sizeof(arr) << endl;
cout << "二维数组第一行占用内存为:" << sizeof(arr[0]) << endl;
cout << "二维数组第一个元素占用内存为:" << sizeof(arr[0][0]) << endl;
cout << "二维数组行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
cout << "二维数组首地址为:" << arr << endl;
cout << "二维数组第一行首地址为" << arr[0] << endl;
cout << "二维数组第一个元素首地址为:" << &arr[0][0] << endl;
system("pause");
return 0;
}
Resultado de saída
Em segundo lugar, a função
Encapsular uma parte do código usado com frequência para reduzir o código repetitivo
Um programa maior é geralmente dividido em vários blocos de programa, e cada módulo realiza uma função específica
1. A definição da função:
-
Tipo de valor de retorno
-
Nome da função
-
lista de parâmetros
-
Declaração do corpo da função
-
expressão de retorno
返回值类型 函数名(参数列表)
{
函数体语句
return表达式
}
2. Chamada de função
函数名(参数);
Os parênteses na definição da função são chamados de parâmetros formais e os parâmetros passados quando a função é chamada são chamados de parâmetros reais.
Exemplo
#include<iostream>
using namespace std;
//求和
int add(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
int main()
{
int a = 10;
int b = 20;
int c = add(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
system("pause");
return 0;
}
Resultado de saída
3. Transferência de valor
A chamada transferência de valor é que o parâmetro real passa o valor para o parâmetro formal quando a função é chamada
Quando o valor é passado, se o parâmetro formal ocorrer, não afetará o parâmetro real
Se a função não precisa retornar um valor, você pode escrever void ao declará-lo
Exemplo
#include<iostream>
using namespace std;
//交换两值
void swap(int num1, int num2)
{
cout << "交换前:" << num1 << " " << num2 << endl;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "交换后:" << num1 << " " << num2 << endl;
}
int main()
{
int a = 10;
int b = 20;
cout << "调用函数前:a = " << a << " b = " << b << endl;
swap(a, b);
cout << "调用函数后:a = " << a << " b = " << b << endl;
system("pause");
return 0;
}
Resultado de saída
4. Estilos comuns de funções
-
Sem participação, sem retorno
-
Participação sem retorno
-
Retorno sem participação
-
Participe e volte
Exemplo
#include<iostream>
using namespace std;
//1、无参无返
void test01()
{
cout << "this is test01 " << endl;
}
//2、有参无返
void test02(int num)
{
cout << "this is test02 X = " << num << endl;
}
//3、无参有返
int test03()
{
int flag = 1;
return flag;
}
//4、有参有返
int test04(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
int main()
{
test01();
int a = 10;
test02(a);
int b = test03();
cout << "this is test03 b = " << b << endl;
int c = test04(a, b);
cout << "this is test04 c = " << c << endl;
system("pause");
return 0;
}
Resultado de saída
5. Declaração de função
Diga ao compilador o nome da função e como chamá-la, o corpo real da função pode ser definido separadamente
A função pode ser declarada várias vezes, mas só pode ser definida uma vez
Exemplo
#include<iostream>
using namespace std;
int add(int num1, int num2);
int main()
{
int a = 10;
int b = 20;
int c = add(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
system("pause");
return 0;
}
int add(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
Resultado de saída
6. Gravação de funções de subarquivos
Geralmente, há 4 etapas para escrever um arquivo de função:
-
Crie um arquivo de cabeçalho com a extensão .h
-
Crie um arquivo de origem com o sufixo .cpp
-
Escreva a declaração da função no arquivo de cabeçalho
-
Escreva a definição da função no arquivo de origem
Arquivo de cabeçalho.h
#include<iostream>
using namespace std;
void swap(int a, int b);
Function.cpp
#include"swap.h"
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
O programa principal chama .cpp
#include"swap.h"
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
[Nota] O curso de aprendizagem é - Dark Horse Program C ++ Tutorial