day3 吃饱饭先来更新一波之前所学的知识

一开始是一些定义部分

数组

特点1:数组中的每个数据元素都是相同的数据类型  

特点2:数组是由连续的内存位置组成的    

int arr[] = {};

函数

如果函数不需要返回值,声明函数的时候可以写void eg. void change(形参)返回值不需要的时候也可以不用写return。一般语法 :数据类型 函数名(形参){函数体语句}

注意:

在值传递的时候,形参发生改变,但是实参不会发生改变

只有地址传递的时候,形参发生改变,实参也发生改变。

后续还有引用传递,形参发生改变,实参也发生改变。

函数声明 int max(int a , int b );(函数声明可以写多次但是函数定义只能有一次)

指针

指针是一种数据类型 32位操作系统下指针都占用4字节。 64位占用8字节

⚠ 避免使用未初始化的指针!

可以通过指针保存一个地址。   int *p = NULL;//空指针

0~255之间的内存是系统占用的,不允许用户访问;

可以通过解引用的方式来找到指针指向的内存, 指针前加*代表解引用,找到指针指向的内存中的数据.    

int a = 10;

int *p = &a;

*p = a   解引用指针可以取里面地址中的内容

注:

常量指针  const int * p = &a 特点:指针的指向可以修改,但是指针指向的值不可以修改  eg *p = 20 错误

指针常量  int *const p = &a; 特点:指针的指向不可以修改,但是指针指向的值可以修改 eg p = &b 错误

const * 值不可改(常量指针)。

const * 地址不可改(指针常量)。

const int const *p = &a;特点:指针的指向和指针指向的内容都不可以修改

一些常见的思想

int arr[] = {1, 2, 3, 4, 5};

int *p = arr;  // *p 是指向 arr[0] 的指针  

数组本质上也是一个指针

p < arr + 5   :arr 是一个数组名,它本质上是指向 arr[0] 的指针,类型是 int*。

接下来是经典的冒泡排序算法,听师兄说,面试的时候会要手撕这段代码,赶紧再来回想一下这类的题型

经典题目 冒泡排序

//首先先来写冒泡排序函数的程序

void bubbleSort(int *arr , int len)
{
    for (int i = 0 ; i < len - 1; i++)
    {
        for(int j = 0 ; j < len - 1 - i ; j++)
        {
            if(arr[j]>arr[j+1])
            {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
//接着是显示结果的一个函数代码   这是一个显示数组中所有元素的函数   就是一个循环遍历整个数组
void printinfo(int* arr , int len)
{
    for(int i = 0 ; i < len ; i++)
    {
        cout << arr[i] << endl;
    }
}
int main()
{
    int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
    len = sizeof[arr] /sizeof(arr[0]);
    bubbleSrot(arr , len);//这里之前写错了写成bubbleSort(int *arr , len);   调用函数的试试,不需要写数据类型,只需要传入变量名
    printinfo(arr , len);
    system("pause");
    return 0 ;
}

主要就是冒泡排序的一个思路,一个数组如果有10个数字,那么要对这个数组进行排序,从第一个元素开始向后比较,第一轮(也就是i =0的时候) ,比较的次数就是9次  ,到第一轮的时候 最后一个数字已经是最大的了,所以比较的次数就是8次,按照上述的规律 ,到第i轮的时候 比较次数就是len - 1 - i 次,根据上述思路写for循环就可以了。

上述是我做这个题目的一个思路,做一个保留以防之后忘记。

好了好了休息差不多了,该继续学习咯,晚上回去睡觉之前还需要记录一下今天学的一个题目的代码,还得好好理解~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值