10月18号博客

函数

形参实例化后就相当于实参的一份临时拷贝。

内存分为:栈区、堆区、静态区。

栈区储存:局部变量、形式参数。

堆区(动态内存管理)储存:malloc,realloc,calloc。free函数。

静态区存储:静态变量、全局变量。

int a=0;

a是给程序员自己看的。机器看内存是直接看地址的。

函数的调用

传值调用:比大小。

在这种设计中,形参是实参的一份临时拷贝,对形参的修改不会影响实参。

形参和实参分别占用不同的内存块。

传址调用:交换数据。

传递变量的地址,通过形参的指针就能访问到函数外部的变量,并进行操作。

传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。

这种传参方式可以让函数和函数外面的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。

int *pa:创建一个指针变量。&a:传地址进去,pa即存放a的地址,*pa即对pa地址所指向的a进行操作。

用函数找素数(使用math头文件和sqrt函数)

//判断100--200中素数和其个数。

//先假设有这个函数,在主函数把主体写好,这时你的函数返回值类型等都能确定,完善好主体后再去写你用的函数。去实现这个函数。

TDD-----测试驱动开发(test drive development )

#include <stdio.h>

#include <math.h>


int is_prime(int x)
{
    for (int j = 2; j <= sqrt(x); j++)
    {
        if ((x % j) == 0)
        {
            return 0; break;
        }
        
    }
    return 1;
}
int main()
{
    int count = 0;
    for (int i = 100; i <= 200; i++)
    {
        if ((is_prime(i))== 1)
        {
            printf("%d   ", i);
            count++;
        }
    }
    printf("%d", count);
}

函数的定义

函数:子程序。

是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务。并相对于其他代码,具有相对的独立性

一般会有输入参数并有返回值,提供对过程的封装和对细节的隐藏。这些代码通常被集成为软件库。

函数可以嵌套调用,但是不能嵌套定义。

函数的链式访问

把一个函数的返回值作为另外一个函数的参数。

int ret=strlen(strcat(arr,"bit")),strcat函数把arr后面接上bit的字符串,之后再计算其长度。

函数的声明和定义

  函数的声明需要;

函数的定义不需要

函数的声明放在头文件中。

如果有子程序1,函数在子程序2中,则要在子程序1用头文件包含以下。

#include “add.h”           //add是函数名。

.lib  静态库

函数的递归

死递归会导致栈溢出

递归是函数自己调用了自己。

函数栈帧的创建与销毁。

 每一次函数的调用,都要在栈区分配一块内存空c函数在调用过程中的中下文信息。

每次调用都会分配一个空间,等归的时候逆序销毁。  

递归函数:我自己调用我自己。我内部的函数包含我自己。如果变成死递归,栈空间最后会溢出,死掉了就。

递归成功条件:

我递归过程中得不断去逼近我的判断条件(否则会造成死递归)

(1)存在限制条件,当满足这个限制条件时,递归就不再发生。

  (2)每次递归调用之后会越来越逼近这个条件。

递归中排队顺序打印

n=1234

打印: 1  2  3  4.

#include <stdio.h>

void print(unsigned int n)
{
    if (n > 9)
    {
        print(n / 10);
    }
    printf("%d\n",n%10);
}
int main()
{
    int a = 0;
    scanf("%d", &a);
    print(a);
    return 0;
}

strlen函数的构造

#include <stdio.h>

int strlen(char*s)
{
    int count = 0;
    while(*s != '\0')
    {
        count++;
        s++;
    }
    return count;
}
int main()
{
    char arr[] = "abcdefg";
    int num = strlen(arr);
    printf("%d", num);
    return 0;
}

使用递归写strlen函数

//用函数递归来写strlen函数,不要用局部变量。
int strlen(char*s)
{
    if (*s == '\0')
    {
        return 0;
    }
    else
        return 1 + strlen(s + 1);
}
int main()
{
    char arr[] = "abcdefg";
    int num = strlen(arr);
    printf("%d", num);
    return 0;
}

迭代求阶乘

#define _CRT_SECURE_NO_WARNINGS 1
//迭代求阶乘
#include <stdio.h>

int Fac(int input)
{
    if (input == 1)
        return 1;
    else
        return input * Fac(input - 1);
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    int num = Fac(n);
    printf("%d", num);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的CSDN框架的HTML代码: ```html <!DOCTYPE html> <html> <head> <title>我的</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <header> <div class="container"> <h1>我的</h1> <nav> <ul> <li><a href="#">首页</a></li> <li><a href="#">分类</a></li> <li><a href="#">标签</a></li> <li><a href="#">关于我</a></li> </ul> </nav> </div> </header> <main> <div class="container"> <article> <h2>文章标题</h2> <div class="author"> <img src="avatar.jpg"> <div> <p>作者:小明</p> <p>发布时间:2021年9月1日</p> </div> </div> <p>文章内容...</p> </article> <aside> <h3>最新文章</h3> <ul> <li><a href="#">文章标题1</a></li> <li><a href="#">文章标题2</a></li> <li><a href="#">文章标题3</a></li> <li><a href="#">文章标题4</a></li> <li><a href="#">文章标题5</a></li> </ul> <h3>标签</h3> <ul> <li><a href="#">标签1</a></li> <li><a href="#">标签2</a></li> <li><a href="#">标签3</a></li> <li><a href="#">标签4</a></li> <li><a href="#">标签5</a></li> </ul> </aside> </div> </main> <footer> <div class="container"> <p>版权所有 © 2021 我的</p> </div> </footer> </body> </html> ``` 接下来,我们需要创建一个名为`style.css`的样式表文件,并在其中添加以下样式: ```css /* 全局样式 */ body { margin: 0; padding: 0; font-family: Arial, sans-serif; font-size: 16px; color: #333; } .container { max-width: 1200px; margin: 0 auto; padding: 0 20px; } a { color: #333; text-decoration: none; } a:hover { color: #f60; } /* 头部样式 */ header { background-color: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); position: fixed; top: 0; left: 0; right: 0; z-index: 9999; } header h1 { margin: 0; padding: 20px; float: left; font-size: 24px; } header nav { float: right; margin: 0; padding: 0; } header nav ul { list-style: none; margin: 0; padding: 0; } header nav ul li { float: left; margin: 0; padding: 0; } header nav ul li a { display: block; padding: 20px; } header nav ul li a:hover { background-color: #f60; color: #fff; } /* 主体样式 */ main { margin-top: 80px; } article { background-color: #fff; padding: 20px; margin-bottom: 40px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } article h2 { margin: 0; padding: 0; } .author { margin: 20px 0; padding: 0; display: flex; align-items: center; } .author img { width: 50px; height: 50px; border-radius: 50%; margin-right: 10px; } .author p { margin: 0; padding: 0; font-size: 14px; } aside { margin-left: 20px; flex: 1; } aside h3 { margin: 0; padding: 0; font-size: 18px; } aside ul { list-style: none; margin: 0; padding: 0; } aside ul li { margin: 0; padding: 0; } aside ul li a { display: block; padding: 5px 0; } /* 页脚样式 */ footer { background-color: #f2f2f2; padding: 20px; margin-top: 40px; } footer p { margin: 0; padding: 0; font-size: 14px; text-align: center; } ``` 现在,我们就完成了一个简单的CSDN的HTML+CSS框架。您可以根据自己的需求进行修改和扩展,添加更多的功能和样式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值