首页 > 其他分享 >20221018笔记

20221018笔记

时间:2022-10-18 19:01:45浏览次数:58  
标签:return 函数 int 20221018 笔记 result printf num1

初级课程只有10节,所以计划10天看完,一鼓作气嘛,20221016开始,20221025全部看完;之后再进入进阶课程。

函数的递归是重中之重!一定要练习,不然等于白学!

20221018笔记_#include

函数

需要学会查询工具的使用:

MSDN(Microsoft Developer Network)

www.cplusplus.com

​http://en.cppreference.com(英文版) ​

​http://zh.cppreference.com(中文版) ​

英文很重要。最起码得看懂文献。

1.函数的分类

ret_type fun_name(para1, * )
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
#include <stdio.h>
//get_max函数的设计
int get_max(int x, int y)
{
return (x>y)?(x):(y);
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
printf("max = %d\n", max);
return 0;
}
#include <stdio.h>
//实现成函数,但是不能完成任务
void Swap1(int x, int y)
{
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
//正确的版本
void Swap2(int *px, int *py)
{
int tmp = 0;
tmp = *px;
*px = *py;
*py = tmp;
}
int main()
{
int num1 = 1;
int num2 = 2;
Swap1(num1, num2);
printf("Swap1::num1 = %d num2 = %d\n", num1, num2);
Swap2(&num1, &num2);
printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
return 0;
}


2.函数的参数

2.1实参

真实传给函数的参数,叫实参。

实参可以是:常量、变量、表达式、函数等。

无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。

2.2形参

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。


3.函数的调用

3.1传值调用

函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。

3.2传址调用

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

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

作函数外部的变量。

4.函数的嵌套调用和连接访问

4.1嵌套调用

#include <stdio.h>
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for(i=0; i<3; i++)
{
new_line();
}
}
int main()
{
three_line();
return 0;
}

4.2链式访问

#include <stdio.h>
#include <string.h>
int main()
{
char arr[20] = "hello";
int ret = strlen(strcat(arr,"bit"));//这里介绍一下strlen函数
printf("%d\n", ret);
return 0;
}
#include <stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
//结果是啥?
//注:printf函数的返回值是打印在屏幕上字符的个数
return 0;
}

5.函数的声明和定义

5.1函数声明

  1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。
  2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
  3. 函数的声明一般要放在头文件中的。

5.2函数定义

函数的定义是指函数的具体实现,交待函数的功能实现。

#ifndef __TEST_H__
#define __TEST_H__
//函数的声明
int Add(int x, int y);
#endif //__TEST_H__
#include "test.h"
//函数Add的实现
int Add(int x, int y)
{
return x+y;
}

6.函数递归

程序调用自身的编程技巧称为递归( recursion)。

递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归的主要思考方式在于:把大事化小

#include <stdio.h>
void print(int n)
{
if(n>9)
{
print(n/10);
}
printf("%d ", n%10);
}
int main()
{
int num = 1234;
print(num);
return 0;
}
#incude <stdio.h>
int Strlen(const char*str)
{
if(*str == '\0')
return 0;
else
return 1+Strlen(str+1);
}
int main()
{
char *p = "abcdef";
int len = Strlen(p);
printf("%d\n", len);
return 0;
}
int factorial(int n)
{
if(n <= 1)
return 1;
else
return n * factorial(n-1);
}
int fib(int n)
{
if (n <= 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}
//求n的阶乘
int factorial(int n)
{
int result = 1;
while (n > 1)
{
result *= n ;
n -= 1;
}
return result;
}
//求第n个斐波那契数
int fib(int n)
{
int result;
int pre_result;
int next_older_result;
result = pre_result = 1;
while (n > 2)
{
n -= 1;
next_older_result = pre_result;
pre_result = result;
result = pre_result + next_older_result;
}
return result;
}




标签:return,函数,int,20221018,笔记,result,printf,num1
From: https://blog.51cto.com/u_15831330/5767978

相关文章

  • Matlab学习笔记(03)——三种循环语句的用法(for、switch、while)
    为了减轻循环计算的步骤,三种循环语句可以根据所需要的方法进行选择。 for循环格式:fori=1:10a=1+i;end这个格式可以用于求的1到10的总和 switch循环......
  • 强化学习-笔记
    importgymfromgymimportenvsenv_specs=envs.registry.all()#查看库中都注册了哪些环境#foreinenv_specs:#print(e)env=gym.make("CartPole-v1......
  • Spring cloud alibaba 笔记1
               创建应用                                      ......
  • 上位笔记_04_SQLITE操作(创建以及可视化查看)
    nuget安装sqlite,引用  System.Data.SQLite分X64和X86版本。一般来说,在64位系统上就应该使用X64版本的,但是这样一来开发工作似乎就繁琐了许多如果不区分,就会出现如......
  • java学习笔记38
    面向对象什么是多态1.多态概述多态是继封装、继承之后,面向对象的第三大特性。2.多态现实意义理解:现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学......
  • ARM 笔记(1018)-- STM32部分--14 通用定时器输入捕获
    12.4通用定时器输入捕获输入捕获的概念:输入捕获是什么意思?怎样实现的输入捕获?输入捕获捕获的是跳跃的信号,根据硬件连接关系,按键按下是上升沿,按键抬起是下降沿。如果想......
  • [轻量化网络]shuffleNet V2学习笔记
    1.四条轻量化网络设计准则如上图所示,分别在GPU和ARM设备上,测试ShuffleNetV1和MobileNetV2在各种操作上的耗时占比,其中:Elementwise:逐元素操作,如RELU函数,残差网络的逐......
  • 【Kubernetes】K8s笔记(八):Deployment 发布无状态的应用
    目录1.DeploymentAPI对象2.使用YAML描述Deployment3.操作Deployment4.labels字段的使用方法1.DeploymentAPI对象我们之前学习了API对象Job和CronJob,......
  • 《ZLToolKit源码学习笔记》链接--秦时小(转载)
    《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析(本文)《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析《ZLToolKit源码......
  • ansible学习笔记04(最佳实践)
    使用过滤和插件转换数据1、使用过滤器处理变量1.1ansiblefilteransible应用变量到playbook并且使用jinja2表达式来使用变量。例如下面的J2表达式中的变量使用两个大......