自家笔记.C语言

鹏哥c语言视频

P46 函数递归

代码如下:

//输出1234输出1 2 3 4 (用递归)
#include<stdio.h>
#include<windows.h>

void digui(int a)
{
    int n=a;
    if (n > 9)
    {
        digui(n / 10);
    }
    printf("%d ", n % 10);

}
int main()
{
    int a;
    printf("请输入要拆分的数字\n");
    scanf_s("%d", &a);
    digui(a);
    system("pause");
}

结果如下:

当递归没有写终止条件时会出现栈溢出的情况。

要了解到内存分为三大块:

栈区,堆区,静态区。

栈区

{放局部变量,函数形参,函数返回值(也可以放在寄存器)函数调用……都会在栈上申请空间。当函数调用(递归)太多时候也会出现栈溢出情况。

}

其他的目前尚未了解太多,可知程序员写代码时会有将部分代码放进静态区中以减少发生栈溢出的可能。

P57 数组与数组名

1.冒泡排序:

//冒泡排序
#include<stdio.h>
#include<windows.h>
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,0 },i,j,sz;
    sz = sizeof(arr) / sizeof(arr[0]);
    for (i = 0; i< sz; i++)
    {
        for (j = 0; j <sz-i; j++)
        {
            
            if (arr[j] < arr[j - 1])
            {
                int a = 0;
                a = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = a;
            }

        }
    }
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }
    
    system("pause");

}

递归的两个必要条件

1.存在限制条件。

2.递归后越来越接近限制条件。

递归的好习惯:不要改变传值本身。

例如:return(str+1)的好处>return(++str)


二维数组:

1.在函数传参方面与一维数组一致都是"arr"

2.在函数调用时一维数组可以在写成一维指针,但是二维数组不行。它要写成指向一维数组的指针

"int(*arr[x])"

3.arr表示数组的首元素地址,主函数中sizeof(arr)表示数组长度而不是类型长度。

关于main函数

在c语言中main函数也是被一个函数调用的(_tmain CRTStart up())但这个函数也被另一个函数调用着(mainCRTStart up())

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值