IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言入门 day5 -> 正文阅读

[C++知识库]c语言入门 day5

  • ?????? 今天学习了函数的,了解了函数分为库函数以及自定义函数,库函数可以直接调用函数库里自带的函数进行使用如strcpy(交换数值)char * strcpy ( char * destination, const char * source ); ,memset(将某一内容设定为指定值)void * memset ( void * ptr, int value, size_t num );

库函数的使用必须包含 #include 对应的头文件?

如果使用自定义函数不带返回值,那么必须加上void如 void Swap2(int *px, int *py) ;

  • 函数的参数分为实际参数和形式参数
实际参数可以是常量、变量、表达式、函数等。
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化。
※对于数组来说,实际参数到形式参数仅仅是数组的首个元素地址(本质上就是收到了一个指针)
如交换函数代码如下
#include<stdio.h>
void swap(int *num1,int *num2)
{
   int tem=0;
   tem=*num1;
   *num1=*num2;
   *num2=tem;
}
int main()
{
   int x;
   int y;
   swap(&x,&y);
   printf("%d %d",x,y);
   return 0;
}

交换时要取&,这样才能找到x,y的地址,交换xy的内容时要加上‘ * ’

即当用参数改变实参时必须用&取地址如add(&a)? void add(int *p)

  • 函数的调用分为

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

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

这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操
作函数外部的变量。
  • 函数的嵌套调用和链式访问,即函数和函数之间可以有机的组合的。
  • 函数的声明和定义
函数的声明: 函数的声明一般出现在函数的使用之前。要满足 先声明后使用 函数的声明一般要放在头文件中。如下
//test.h中的内容

#ifndef __TEST_H__
#define __TEST_H__
//函数的声明
int Add(int x, int y);
#endif //__TEST_H__
函数的定义:是指函数的具体实现,交待函数的功能实现。如下
//tset.c中的内容

#include "test.h"
//函数Add的实现
int Add(int x, int y) {
 return x+y; }
  • 递归函数:它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求
    解。? 递归的主要思考方式在于:把大事化小 。
递归的两个必要条件
①存在限制条件,当满足这个限制条件的时候,递归便不再继续。
②每次递归调用之后越来越接近这个限制条件。

例题1 接受一个整型值(无符号),按照顺序打印它的每一位。 例如:输入:1234,输出 1 2 3 4.

#include<stdio.h>
void print(int n)
{
	if(n>9)
	{
		print(n/10);
	}
	printf("%d ",n%10);
}
int main()
{
	unsigned int num=0;
	scanf("%d",&num);
	print(num);
	return 0;
}

例题2 编写函数不允许创建临时变量,求字符串的长度。

#include<stdio.h>
int my_strlen(char* str)
{
	if(*str!=0)
	{
		return 1+my_strlen(str+1);
	}
	else
		return 0;
}
int main()
{
	char arr[]="bit";
	//int len=strlen(arr);
	//printf("%d\n",len);
	int len = my_strlen(arr);
	printf("len=%d\n",len);
	return 0;
}

例题3 求n的阶乘。

#include<stdio.h>
int fac2(int n)
{
	if(n<=1)
		return 1;
	else
		return n*fac2(n-1);
}
int main()
{
	int n=0;
	int ret=0;
	scanf("%d",&n);
	ret = fac2(n);
	printf("%d\n",ret);
	return 0;
}

例题4 求第n个斐波那契数。


#include<stdio.h>
int fib(int n)
{
	if(n<=2)
		return 1;
	else
		return fib(n-1)+fib(n-2);
}
int main()
{
	int n=0;
	int ret=0;
	scanf("%d",&n);
	ret= fib(n);
	printf("ret=%d\n",ret);
	return 0;
}

此方法求斐波那契数并不是一个好方法,因为其中会重复好多遍同一计算,而系统分配给程序的栈空间是有限的,所以会导致栈溢出。

※printf函数的返回值是打印在屏幕上字符的个数

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 12:59:34  更:2021-09-12 13:01:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 2:41:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码