C++ Day3 数组与函数

c++从入门到放弃> <

一、一维数组

  • 数组:一个存放相同类型的数据元素的集合;
  • 数组中每个数据元素都是相同的数据类型
  • 数组由连续的内存位置组成;
  • 数组下标从0开始索引;
  • 数组名不要和变量名相同;

1.1 定义方式

  1. 数据类型 数组名[数组长度];
  2. 数据类型 数组名[ ]={值1,值2,。。。};
  3. 数据类型 数组名[数组长度 ]={值1,值2,。。。};//不够长度用0填充

1.2 数组名

  • 可以统计整个数组在内存中的长度;sizeof(数组名)
  • 可以获取在数组在内存中的首地址;
#include<iostream>
using namespace std;
int main()
{
    int arr1[]={1,2,3,4};
    cout<< arr1<<endl;//查看数组的首地址
    cout<< &arr1[0]<<endl;//查看数组中第一个元素地址
    cout<< &arr1[1]<<endl;//查看数组中第二个元素地址
    system("pause");
}

示例

  1. 最大值
#include<string>
#include<iostream>
using namespace std;

int main()
{
    int arr2[]={100,700,500,250,350};
    int lenarr2=sizeof(arr2)/sizeof(arr2[0]);//数组长度
    int maxarr=0;
    for(int i=0;i<lenarr2;i++)
    {
        if(arr2[i]>maxarr)
        {
            maxarr=arr2[i];
        }
    }
    cout<<"最大值为"<<maxarr<<endl;
    system("pause");
}
  1. 元素逆置
#include<string>
#include<iostream>
using namespace std;

int main()
{
    int arr3[]={2,1,3,4,5};
    int end=sizeof(arr3)/sizeof(arr3[0])-1;//数组从0开始索引
    int start=0;
    while(start<end)
    {
        int temp=arr3[start];
        arr3[start]=arr3[end];
        arr3[end]=temp;
        start++;
        end--;
    }
    for(int i=0;i<5;i++)
    {
        cout<<arr3[i]<<endl;
    }
    system("pause");
}

1.3冒泡排序

  • 作用:对数组内的元素进行排序

步骤:

  1. 比较相邻的两个元素,如果第一个比第二个大就交换他们;
  2. 对数组中的每个元素执行第一步,最大值像气泡一样被放在比较的最后一位;
  3. 重复1.2但每次比较次数-1;

#include<string>
#include<iostream>
using namespace std;

int main()
{
	int arr1[]={5,4,2,1,3,6,7,9,8};
    //冒泡排序
    int len=sizeof(arr1)/sizeof(arr1[0]);//数组长度
    for (int i =len-1;i>=0;i--)//外层循环每次循环次数减一
    {
        for(int k=0;k<i;k++)
        {
            if(arr1[k]>arr1[k+1]) //找到第1/2/3.。个最大值放在数组最后1/2/3.。位
            {
                int temp=arr1[k];
                arr1[k]=arr1[k+1];
                arr1[k+1]=temp;
            }
        }
    }
    for(int i=0;i<len;i++)
    {
        cout<<arr1[i]<<endl;
    }
    system("pause");
}

二、二维数组

  • 在一维数组的基础上多加了一个维度;

2.1.定义方式

  1. 数据类型 数组名[行数][列数];
  2. 数据类型 数组名[行数][列数]={{值1,值2},{值3,值4}}; //推荐直观
  3. 数据类型 数组名[行数][列数]={值1,值2,值3.。};//自动划分行列
  4. 数据类型 数组名[ ][列数]={值1,值2,值3.。};//可以省略行数但要有列数

2.2.数组名

    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;

三、函数

-将经常使用的代码封装起来,减少重复代码

3.1函数的定义

步骤:

  1. 返回值类型;//不需要返回值声明void
  2. 函数名;
  3. 参数列表;
  4. 函数体语句;
  5. return表达式
int add(int num1,int num2)//num1和num2为形参没有真实数据
{
    int sum=num1+num2;
    return sum;
}

3.2 函数的调用

  • 使用定义好的函数
  • 语法:函数名(参数)

3.3值传递

  • 当函数调用的时候,实参的值会传递给形参;
  • 值传递时,形参发生改变不会影响实参

#include<string>
#include<iostream>
using namespace std;

void swap(int num1,int num2)
{
    int temp=num1;
    num1=num2;
    num2=temp;
    cout<< "num1: "<<num1<<endl;
    cout<< "num2: "<<num2<<endl;
}
int main()
{
    int a=10;
    int b=20;
    swap(a,b);
    cout<<"a: "<< a<<endl;
    cout<< "b: "<<b<<endl; //a b 不发生改变
    system("pause");
    }

3.4 常见样式

  • 有参有返
  • 有参无返
  • 无参无返
  • 无参有返

3.5 函数的声明

  • 可以声明多次,只能定义一次
  • 一般函数定义在main函数之前;若在main函数之后则应先声明存在该函数;
void swap(int num1,int num2);//声明
void swap(int num1,int num2);//声明可以多次
int main()
{
    int a=10;
    int b=20;
    swap(a,b);
    cout<<"a: "<< a<<endl;
    cout<< "b: "<<b<<endl;
    system("pause");
}
void swap(int num1,int num2) //定义只能有一次
{
    int temp=num1;
    num1=num2;
    num2=temp;
    cout<< "num1: "<<num1<<endl;
    cout<< "num2: "<<num2<<endl;
}

3.6 函数的分文件编写

  • 使代码的结构更加清晰;
  1. 创建后缀名为.h的头文件;
  2. 创建后缀名为.cpp的源文件;
  3. 在头文件中写函数的声明;
  4. 在源文件中写函数的定义;
  5. 引用自定义文件要用""不是<>

1.day3.h

void swap(int num1,int num2);//声明
#include<iostream>
using namespace std;

2.day3.cpp:

#include"day3.h" //自定义文件要用""不是<>
int main()
{
    int a=10;
    int b=20;
    swap(a,b);
    cout<<"a: "<< a<<endl;
    cout<< "b: "<<b<<endl;
    system("pause");
}
void swap(int num1,int num2) //定义
{
    int temp=num1;
    num1=num2;
    num2=temp;
    cout<< "num1: "<<num1<<endl;
    cout<< "num2: "<<num2<<endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值