C语言----函数

本文深入探讨了C语言中的函数定义、注意事项、如何通过指针修改主调函数中的变量、一维数组的处理以及递归函数的使用。通过实例展示了如何传递一维数组并比较了递归与循环的差异。同时,文章还讨论了函数参数的传值与传地址的概念,强调了在适当情况下使用指针的重要性。
摘要由CSDN通过智能技术生成

函数的定义

函数的返回值     函数的名字(形参列表)
{
	函数的主体
}

函数的注意事项

  1. 函数的本质是描述实现某个特定功能
  2. 函数的返回值的类型称为函数的类型若函数主体的返回值和函数名前的返回值类型不同,最终返回值以函数名前的类型为准
  3. 注意函数调用和函数定义的顺序,如果函数调用写在了函数定义之前必须加函数前置声明并且声明要加 ; 分号

如何通过被调函数修改主调函数中普通变量的值

要想修改主调函数的值,实参一定要为该变量的地址,形参一定要是指针变量 通过 *p在函数中来修改变量的值

#include <stdio.h>
void func(int *a);
int main()
{
 int a = 0; //初始化 a 值为 0
 func(&a); //调用函数 func
 printf("%d",a); //输出 a 的结果
}
void func(int *a)//定义函数 func
{
 *a = 10;   
}

地址对于不同的作用域是开放的

一维数组名和大小

#include<stdio.h>
int main()
{
	int array[4] = { 1,2,3,4 };
	printf("len = %d\n", sizeof(array));
	printf("len1 = %d\n", sizeof(array)/sizeof(array[0]));
	printf("len2 = %d\n", sizeof(array[0]));
	printf("首元素 = %d\n", *array);
	int* p ;
	p = array;
	printf("p的大小 = %d\n", sizeof(p));
	printf("p = %#x\n", p);
	printf("p = %#x\n", array);
	printf("*p的值 = %d\n",*array);
	printf("*p的值 = %d\n", *p);
	//printf("p指针的大小 = %d\n", sizeof(p));
	printf("p的地址 = %#x\narray的地址 = %#x\n", &p, &array);
}

运行结果
数组名传递参数的时候就相当于一个指针 但是你要去sizeof的时候他的大小就是数组的大小

如何用函数来传递一维数组

数组的传递不可能通过从copy来传递 想传递必须通过指针来改变

函数是C语言的最小单位

函数的调用

递归函数

直接或者间接调用自己的情形就叫做递归函数,递归是比较接近自然语言特性的一种调用方式,需要使用合理的出口。否则会报错甚至程序直接挂掉。 递归–递过去归还回来
满足递归的条件其实和循环很相似—初始化、 条件终止语句、循环
终止条件----递归条件

递归返回func(递归条件)
{
	if(递归终止条件)
		终止处理;
	else
		func(趋于递归终结条件);
}
//求n的阶乘
int factorial(int n)
{
	if(n == 0)
		return 1;
	else
		return n *factorial(n-1);//注意递归条件是否参与运算 
// 		return n *factorial(--n);
}
int fact = factorial(5)

递归与循环对比

能用循环最好用循环

递归小问题–请问输出结果是什么

#include<stdio.h>
void fun(int i)
{
    if (i > 0)
    {
        fun(i / 2);
    }
    printf("%d\n", i);
}
int main()
{
    fun(10);
    return 0;
}

0 1 2 5 10

函数的传值和传地址

当满足不了传值的时候传递地址。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值