深入了解C语言(函数的参数传递和函数使用参数的方法)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

深入了解C语言

C语言生成的代码在执行效率上比其它高级语言都高.现在让我们来看看C语言生成的代码具体是什么样子的.当你看完本文对于C语言的了解一定会更深一步了.

本文通过一个个实际案例程序来讲解C语言.

研究案例一

工具: Turboc C v2.0,Debug,MASM v5.0,NASM
实例C程序:
/* example1.c */
char ch;

int e_main()
{

e_putchar(ch);

}

目标内容:C语言调用函数的方法与细节

我们使用的C编译器是16位的Turboc C v2.0,它生成的是16位的代码,比较简单,方便我们来研究.同时我们也需要用到DOS下的DEBUG来进行反汇编.由于我们很多案例中的程序并不是完整的C程序,所以Turboc下的Tlink并不能为我们生成目标程序,所以我将使用MASM中的link.exe,同时里面的exe2bin.com也可以为我们把exe文件转换成bin文件.

这个程序没有main函数,我们用e_main来代替main函数.这样我们能避开C语言对main函数进行一系列处理的代码.同样,我们也用e_putchar()来代替我们平常使用的putchar().这里"e"的意思就是"example".

没有了main函数,我们的C程序就没有了入口,所以在开始编译这段C代码之前,我还得写几行简单的汇编代码,通过它来作为我们程序的入口.

【asm基础】在c/c++语言中调用asm函数 【asm基础】在c/c++语言中调用asm函数 阅读详情

相关推荐

C语言基础——函数

C语言重要组成部分。本质是将一个语句块通过命名的方式独立出来。通过调用函数,可以实现对部分代码的反复使用,。函数类似于循环结构,可以节约大量代码。不同的是,函数使用时不用被连续使用,而循环结构必须被连续使用。定义函数函数首部与函数体组成。其中,函数首部由void、函数小括号组成;函数体由大括号语句块组成。void函数(){语句块;}由于函数名属于标识符,所以函数名必须符合标识符的命名规则。命名的函数名要有较好的可读性。

ld15353133609的博客 1万+

ASM 函数参数处理

函数参数传递一般通过栈,在此情形下,又有两种表现形式: 1、形式1定义 fn proc ; asm code list fn endp 2、形式2定义 fn proc arg1:DWORD,arg2:DWORD ;asm code list fn endp  形式2与形式1在本质上是相同的,形式2可以转换为形式1。 区别在于,形式2情形下 1)编译器会自动绑定到参量arg1,ar...

qingshuiaishui的专栏 3027

64位汇编参数传递

64位汇编参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。 当参数为7个以上时, 前 6 个与前面一样, 但后面的依次从 “右向左” 放入栈中,即32位汇编一样。 参数个数大于 7 个的时候 H(a, b, c, d, e, f, g, h); a->%rdi, b->%rsi, c->%rdx, d->%rcx,...

麦峰强的博客 3253

C语言中的函数(超详细)

我们都知道函数是数学里的重要组成部分,数学中我们常见到函数的概念,但是你了解C语言中的函数吗?其实函数就相当于一个子程序,那什么是子程序呢?在计算机科学中,子程序是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。一般会有输入参数并有返回值,提供对过程的封装细节的隐藏。这些代码通常被集成为软件库。如果库函数能干所有的事情,那还要程序员干什么?所有更加重要的是自定义函数!!!

m0_68662723的博客 7万+

【转载】深入了解C语言(函数参数传递函数使用参数方法)

C语言生成的代码在执行效率上比其它高级语言都高.现在让我们来看看C语言生成的代码具体是什么样子的.当你看完本文对于C语言了解一定会更深一步了. 本文通过一个个实际案例程序来讲解C语言. 研究案例一 工具: Turboc C v2.0,Debug,MASM v5.0,NASM实例C程序:/* example1.c */char ch;int e_main(){ e_putchar(ch); } 目

DerekYao的专栏 1427

深入了解C语言(函数参数传递函数使用参数方法)(转)

深入了解C语言C语言生成的代码在执行效率上比其它高级语言都高.现在让我们来看看C语言生成的代码具体是什么样子的.当你看完本文对于C语言了解一定会更深一步了.本文通过一个个实际案例程序来讲解C语言.研究案例一工具: Turboc C v2.0,Debug,MASM v5.0,NASM实例C程序:/* example1.c */char ch;int e_main(){e_putch

conan(王楷)的专栏 1061

c语言函数

C语言函数 一、函数的概念 二、函数的结构 三、函数参数 四、自定义函数 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录C语言函数一、函数的概念二、函数的结构三、函数参数四、自定义函数一、函数的概念?二、函数结构三、函数参数四、自定义函数 一、函数的概念? 函数是用来模块化构建程序的。如果你的功能少,你可以全都写在mian函数中,但是当实现功能多的时候,如果全写在main的函数里,不仅代码不美观,而且函数实现的时候结构复杂,代码重复。 一般来说,我们会把具体实现写在自

chenshida_的博客 5670

C语言函数1

函数的一般形式为:c返回值类型 函数(参数列表) {// 函数体,包含实现函数功能的语句语句;return 返回值;// 如果有返回值,使用 return 语句返回例如,一个简单的加法函数:cint是返回值类型,表示函数执行完毕后将返回一个整数。add是函数名,命名应遵循标识符的命名规则,尽量做到见名知义。是参数列表,定义了函数接受的两个整数参数ab。函数体中计算了两个参数,并使用return语句返回结果。

2502_91438282的博客 432

C函数形式参数函数的语法

函数作为C函数的形式参数,实际上是将函数指针作为形式参数 其语法形式为:   函数返回值   函数名(形参函数返回值  (*形参函数名(形参函数参数列表)),...)   举例如下: void callBack(int n, int (*ptr)());  ...

每天写一点,进步一点点 497

C语言函数参数传递

本文主要介绍C语言参数的三种传递方式,以及个人遇到的一些问题及解决方法 C语言中,传递参数的主要方式有三种: 1.值传递方式 2.地址传递方式 3.引用传递 一、值传递 值传递,指的是将实参的值复制并赋值给形参。这里需要注意的地方是,实参形参的存储单元并不相同,实参的存储单元由实参的定义方式决定,而形参的存储单元则是栈,对应的存储单元在函数调...

qq_35600620的博客 6615

C语言数组当参数传递

在学习C语言的过程中遇到数组作为参数传递的问题 一维数组:#include int test2(int a[]){ for(int i=0;i<5;i++){ printf("%d",a[i]); } } int main(){ int a[5] = {1,2,3,4,5},*p; p = a; test2(a); } 这样我们可以很顺利的在test去遍历这个

Laoynice的博客 10万+

【C语言函数的概念函数的调用(参数传递

文章目录 一、函数的定义 二、参数传递 1.参数 2.传递参数的方式 3.函数调用 一、函数的定义 在C语言中,最基础的程序模块是函数函数被视为程序中基本的逻辑单位,一个C程序是由一个main()函数若干普通函数组成。 定义一个函数的语法格式如下: 返回值类型 函数名([参数类型1 参数名1],[参数类型2 参数名2],[参数类型3 参数名3]...) { 函数体 ...... return 返回值; } 函数主要包含:返回值类型、函数名...

Jacky_Feng的博客 1万+

c语言函数调用带参数,C语言函数 -C语言函数调用参数传递

C语言函数被定义以后可以被多次调用,调用的时候可以向它传递参数。C语言函数调用函数的调用指的就是函数使用方法。在程序中使用已经定义的函数,可以使用函数调用表达式,其一般格式如下:函数(实参1, 实参2, …) //实参对应于函数定义时的形参声明程序执行时,函数调用表达式将会被函数返回值所代替(见图 1)函数的返回值一般由 return 语句指定。图 1:函数调用时参数的传递(值传递)...

weixin_42178688的博客 7500

C语言函数返回值与参数传递

C语言函数返回值与参数传递 一:参数传递 C语言函数中必不可少的就是参数传递,可以采用传值传指针两种方式。 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: int test(int x,int y) { x=2*y; return x; } int main(void) { int a=0,b=5; printf("%d,%d\n\r",test...

qq_37071812的博客 7641

C语言中如何将二维数组作为函数参数传递

今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不至于再在这上面浪费时间。 正文: 首先,我引用了谭浩强先生编著的《C程序设计》上面的一节原文,它简要介绍了如何 将二维数组作为参数传递,原文如下(略有改变,请原谅): [原文开始] 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: voi

赵凯月的博客 1万+

C语言函数参数

一、函数参数可以是变量、变量指针变量引用: void funcA(int8_t x) { x=x+1; } 代码说明:该函数参数属于值传递,在调用该函数时,仅仅只是把实参的值拷贝了一份赋值给了形参x,之后的任何操作都不会影响到实参的值。 int8_t funcB(int8_t* x) { (*x)+=1; return (*x); } 代码说明:该函数的...

tanguohua_666的博客 1万+

阐述 C 语言中的参数传递机制

在 C 语言中,参数传递函数之间进行数据交互的重要方式。C 语言主要采用了两种参数传递机制:值传递指针传递。 ![分割线](https://i-blog.csdnimg.cn/direct/ec9ac2317d534fedac9af54998d35be5.png) # 一、值传递 值传递是指在函数调用时,将实际参数的值复制一份传递给函数的形式参数。在函数内部对形式参数的修改不会影响到实际参数的值。

技术笔记 1949

C语言函数参数传递

在C语言中,函数参数传递可以通过值传递、地址传递、数组传递指针传递等方式实现。不同的传递方式有不同的特点适用场景,程序员需要根据具体情况选择合适的传递方式。在C语言中,函数是程序的基本组成单元之一,而参数传递则是函数间交换信息的重要方式之一。在值传递中,函数调用时实参的值被复制到形参中,函数内部对形参的修改不会影响实参的值。通过传递变量的地址作为参数函数可以直接修改实参的值。在C语言中,数组本质上是指向数组首元素的指针,因此传递数组时实际上传递的是数组首元素的地址。

2401_83379409的博客 1610
上一篇: 80x86保护模式系列教程(3)控制寄存器和系统地址寄存器
下一篇: 深入了解C语言(局部变量的定义)
HashCodeWithJava
博客等级 码龄26年 623粉丝 201原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值