函数、指针混讲,将二者运用在一起的快速讲解

        哈喽大家好,今天给大家带来函数的浅层学习,介绍下函数的调用过程,对函数有一个大概的认识,希望今天的分享今后可以帮助到大家

一、函数

        首先呢介绍下函数,函数的组成部分有函数的返回类型、函数命名、函数的传入参数,组成函数体,在函数体中编写自己的逻辑结构和功能实现。

        接下来用一个实现俩位整数相加的运算来带大家体会下函数的使用

#include<stdio.h>

int Add(int x , int y)//此时的x,y为形参
{
    return x+y;
}

int main()
{
    //实现一个俩位整数相加的函数
    int x = 10;
    int y = 20;
    printf("%d\n",Add(x,y));//此时的x,y为实参
    return 0;
}

        上述代码中,Add为函数的命名,int为函数的返回类型,x、y为传入函数的参数(在写函数时,需要写出传入参数的类型),以上构成了Add函数的函数体,用return像主函数main返回计算值,这个过程就为一个简单的函数调用。

        但是我像与大家分享的不止这么简单。

        传入主函数中调用函数传入的参数为实参,将实参传入函数体中的形参,发生形参实例化,进行临时拷贝,验证放法呢通过取用这俩个参数的地址来证明。

#include<stdio.h>

int Add(int x , int y)
{
    //这里打印的是Add函数的形参地址
    printf("Add &x:%p\nAdd &y:%p\n",&x,&y);
    return x+y;
}

int main()
{
    //实现一个俩位整数相加的函数
    int x = 10;
    int y = 20;
    printf("%d\n",Add(x,y));
    //这里打印的是主函数的实参地址
    printf("main &x:%p\nmain &y:%p\n",&x,&y);
    return 0;
}

         下面便是运行后的结果,可见在俩个函数中,x与y的地址不一样,说明这俩变量并不是一个变量,但这俩个数值是相同的,这就说明函数在传入参数的时发生形参实例化,就是将实参的数值拷贝给形参,并在形参内重新定义的变量开辟的空间,俩者并不是一样的。大家也可以改变Add函数的形参定义名来体现x与y不是同一个。

         当然这个传入的参数方式是传值传参,还有另一种方式便是传址传参,那就是传入给形参的是地址值,也就是指针。

二、指针

        指针在c语言中,是一个非常重要的模块,而指针最大的作用便是提高编译器在查找数据时可以快速的定位数据。指针的相关简要理解:

        1、指针常量:指针常量就是我们经常说的指针,也就是一个数据的地址值,像上述x、y的地址,也叫做x、y的指针。

        2、指针变量:指针变量顾名思义是一个变量,用来存放常量的一个自定义数据,如我们常写的语句 int a = 10;其中a为一个整形变量,10为一个整形数据;类比为指针变量的定义语句 int* p = &a;其中p为一个整形指针变量,&a为一个指针常量存入p中。

        3、指针的解引用:指针解引用就是指向其目标,应用指针指向变量地址,引用此变量的内容

        对指针的简单概念这样,大家可以自行理解下这个概念,下面用代码带大家理解下指针

#include<stdio.h>

int Add(int* x , int* y)
{
    //这里打印x、y指针变量存放的数值
    printf("Add &x:%p\nAdd &y:%p\n",x,y);
    return *x + *y;
}

int main()
{
    //实现一个俩位整数相加的函数
    int x = 10;
    int y = 20;
    printf("%d\n",Add(&x,&y));
    //这里打印的是主函数的实参地址
    printf("main &x:%p\nmain &y:%p\n",&x,&y);
    return 0;
}

        上述在main函数和add函数中的x、y地址值相同,因为在add函数中,我们用的函数参数类型为整形指针,所以发生形参实例化存放的时main函数定义的x、y值的地址,说明add里x、y值解引用后就是main函数里的x、y存放的数值,(这里大家可以通过更改add函数里的x、y解引用后的值,在main函数里打印验证即可)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值