鱼C论坛

 找回密码
 立即注册
查看: 2179|回复: 0

[技术交流] S1E29参数和指针笔记

[复制链接]
发表于 2017-8-11 13:39:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Kotori 于 2017-8-11 13:39 编辑

参数和指针
  1>参数和返回值
        设计函数应该遵循“一个函数实现一个功能”的原则;
        函数一般有返回值,也有函数没有返回值,这时会有“通过返回值告诉用户函数是否调用成功”的做法。
  2>形参与实参
        形参指定义函数时的参数,主要的实现空间分配,了解函数需要传入的参数,以及在函数中使用传入参数。
        实参指在调用函数时给函数传入的参数。
#include <stdio.h>

int max(int a, int b);
int max(int a, int b)     //a,b为形参
{
        if (a > b)
        {
                return a;
        }
        else
        {
                return b;
        }
}

int main()
{
        int i=1, j=2;
        int k;
        k = max(i, j);        //i,j为实参
        printf("%d" ,k);
        return 0;
}
  3>传值和传址
        传值和传址是向函数传递参数的两种方式。传值不改变变量在当前作用域的值,相当于在函数中复制了这个值。而传址则是传入一个参数的实际地址,因此对它的修改是全局的。当传的参数体积较大时,传址更灵活,更节省空间。如果不想这个传址的数据被修改,可用const修饰。
  4>传数组
        C语言中没有直接传递整个数组作为参数的方法,实际上传入的是数组的地址。因此,下面两种方法并没有区别:
int max(int a[5]);
int max(int a[]);
  5>可变参数
        C语言中实现可变参数需引入头文件<stdarg.h>,其内部通过指针对参数进行依次获取,参数不能重复获取。下面是以printf为原型模板。
#include <stdarg.h>

        ......

int myprintf(char *str,...)        //...作为占位符,表示参数个数未知,第一个参数不可省
        {
        ......
        va_list vap;        //定义参数列表,vap为参数列表名
        va_start(vap, str);        //初始化参数列表,第一个为参数列表名,第二个参数为定义函数的第一个参数
        ......
        <变量名> =va_arg(vap, <变量类型>);        //从参数列表中依次获取参数,注意获取单个字符时,变量类型为int;
        ......
        va_end(vap);
        }

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表