C语言中的传值调用

  在c语言中每个变量都有两个属性一个是值,一个是址。

比方:

int a = 2; 

  变量a的值是2,变量a的地址,能够用&取地址操作符获取,即&a。

  因此以C语言的函数传递中具备两种方式传递參数,一种是传址,一种传值。

比方:


void f1(int v)  { ; }    //函数f1
void f2(int *p) { ; }    //函数f2
f1(a) ;                  //这里传值
f2(&a);                  //这是传址

   再比方:

   

void fun(int a, int b);
int main()
{
    int c = 1;
    int d = 2;
    fun(c, d);  //这里传递进去的c和d。跟形參a,b的地址都不是同一
                //个地址,不过将c的值赋给a,d的值赋给b,
                //在fun函数里面改变a和b的值,跟c和d本身无不论什么关系
    return 0;
}
时间: 2024-09-30 12:47:53

C语言中的传值调用的相关文章

C语言中的数组调用——混乱的内存管理

在C语言中想要创建数组只能自己malloc或者calloc,数组复制则是memcpy. 这样创建出来的数组在调用时是不会检测数组边界的,即你声明了一个长度为5的数组,却可以访问第6个位置……也可以给第7个位置赋值……不知道这算不算内存泄露,可否通过这种方法偷取内存中的情报呢? 例: int main(){ int *list=(int*)malloc(5*sizeof(int)); for(int i=0;i<5;++i){ list[i]=i; } for(int i=0;i<15;++i)

D语言中使用extern(Windows)类重载Object方法时的问题

使用D语言已经有快20天了,已经完成项目需要的基本功能,但还需进一步完善. 最近两三天在DGUI基础上移植了几个Window窗口控件,有TreeList(树+列表视图),DataList(数据列表),MdiFrom(多窗口),IEWebBrowser(IE浏览器),SciEditor(Sci源代码编辑器),DockPanel(notpad的Docking插件),SysHeader(表头控件), SysLink等几个标准Windows控件. 感谢DGUI的作者,对Windows控件做的布局管理及封

linux平台学x86汇编(十九):C语言中调用汇编函数

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 除了内联汇编以外,还有一种途径可以把汇编代码整合到C/C++语言中,C/C++语言可以直接调用汇编函数,把输入值传递给函数,然后从函数获得输出值. 如果希望汇编语言函数和C/C++程序一起工作,就必须显示地遵守C样式的函数格式,也就是说所有输入变量都必须从堆栈读取,并且大多数输入值都返回到EAX嫁寄存器中.在汇编函数代码中,C样式函数对于可以修改哪些寄存器和函数必须保留哪些寄

C语言中复数运算及调用blas,lapack中复数函数进行科学计算

C语言中常用的数据类型主要int, float ,double ,char 等,但在科学运算中复数扮演着重要角色.这里讲下C语言中的复数运算以及如何调用blas,lapack库中的复数函数来进行科学计算. 1.C语言中的复数运算. C语言中若要用的复数,需要包含头文件complex.h,下面看看一些基本的例子 #include <stdio.h> #include"complex.h" int main() { complex a, b, c, d, f; a = 1 +

在D语言中如何调用Windows中的COM控件

Windows中COM组件是Windows中重要组成部分,可以注册成系统公共组件,也可以不注册直接调用.在D语言中调用COM组件前,我们需要了解COM组件.COM组件都有一个公共的接口,使用IDL语言编写,使用mild.exe编译器编译后生成tlb格式文件,通常叫做类型库,在生成COM组件的DLL时,会把这个文件放在DLL的资源文件中,资源名称叫做TYPELIB        要调用COM组件,先需要知道COM组件的接口,因此可以先从dll中把类型库导出成IDL接口文件,再把IDL接口文件转化为

如何在C语言中调用Swift函数

在Apple官方的<Using Swift with Cocoa and Objectgive-C>一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中使用Objective-C中的类.在后半部分也介绍了如何在Swift中使用C函数,不过对于如何在C语言中使用Swift函数却只字未提.这里我就为大家分享一下如何在C语言中调用Swift函数. 我们首先要知道的是,所有Swift函数都属于闭包.其次,Swift函数的调用约定与Apple为Clang编译器贡献的B

C语言中调用Lua

C语言和Lua天生有两大隔阂: 一.C语言是静态数据类型,Lua是动态数据类型 二.C语言需要程序员管理内存,Lua自动管理内存 为了跨越世俗走到一起,肯定需要解决方案. 解决第一点看上去比较容易,C语言中有union. 可是第二点呢?万一C语言正引用着Lua的一个值,Lua自动释放了怎么办? 所以就有了一种比union更好的解决方案:栈. 这是一个虚拟的栈,是沟通两者的桥梁,两者的数据交换全都通过这个栈进行,这样只要不pop,Lua就不会自动释放,而什么时候pop由C语言说了算. 下面是一段喜

在Java语言中调用存储过程、存储函数、包头、包体

需要拷贝连接Oracle的jar包,路径如下图所示: 连接Oracle数据库的代码: package demo.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { private static Stri

【转载】如何在C语言中调用shell命令

转载自:http://blog.csdn.net/chdhust/article/details/7951576 如何在C语言中调用shell命令 在linux操作系统中,很多shell命令使用起来非常简单,这些shell命令的程序实现已经被底层实现好.有时候需要在程序中调用shell命令,这样可以就不用在控制台上手动输入shell命令了,下面就以三个函数为例来讲解如何在C语言中调用shell命令. 1.system(执行shell 命令) 相关函数 fork,execve,waitpid,po