形参和实参传递函数对比

#include <stdio.h>
#include <malloc.h>
#include "string.h"

struct student
{
    int age;
    char *name;//char name[10];
};
/* 指针传递,省去拷贝时间 */
void stuprint(student *pst)
{
    printf("形参地址%p\r\n",pst);
    printf("pst->age [%d]\r\n",pst->age);
    printf("pst->name[%s]\r\n",pst->name);
    pst->age=pst->age +1;
    printf("pst->age [%d]\r\n",pst->age);
    printf("pst->name[%s]\r\n",pst->name);
}
/* 数值传递 */
void stuprint1(student st)
{
    printf("形参地址%p\r\n",&st);
    printf("st.age [%d]\r\n",st.age);
    printf("st.name[%s]\r\n",st.name);
    st.age=st.age+1;
    printf("st.age [%d]\r\n",st.age);
    printf("st.name[%s]\r\n",st.name);
}
int main()
{
    student stu;
    stu.age=90;
    stu.name="kl";
    printf("实参地址%p\r\n",&stu);
    stuprint(&stu);
    printf("main stu.age[%d]\r\n",stu.age);
    return 0;

}
时间: 2024-10-11 11:01:18

形参和实参传递函数对比的相关文章

C#形参和实参、引用类型和值类型使用时的一个注意点。

这是早上群里讨论的例子. 1 static void main(string [] arg){ 2 3 var p1=new Person{Name="张三"}; 4 var p2=new Person{Name="李四"}; int i=0; 5 A1(p1,i); 6 A2(p2,ref i); 7 Console.WriteLine(p1.Name+"----"+i);//输出张三-----0 8 Console.WriteLine(p2.

C语言之形参和实参

一 形参与实参 1).定义 形参:形式参数. 就是定义函数的时候,写在函数名小括号后面的参数叫形参 实参:实际参数. 就是调用函数的时候,调用函数时写在函数名小括号后面的参数就叫实参 2).注意项 a.实参既可以放常量,也可以放变量,还可以放表达式;形参:它其实可以理解为就是这个函数的局部变量 b.实参给形参传值,其实只是相当于给函数的形参(局部变量)赋值 c.值传递:在函数内改变了形参的值,不会影响到外面的实参 d.在C语言中,除了数组以外,所有的类型作为实参传递都是值传递 二 有参函数 带参

C语言基础——形参与实参

形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数. 形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参.没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统. 实参:可以是常量.变量.表达式.函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些

const形参和实参

当形参是const时,必须要注意关于顶层const的讨论.如前所述,顶层const的作用于对象本身: const int ci=42;  //不能改变ci,const是顶层的 int i=ci:   //正确:当拷贝ci时,忽略了它的顶层const int *const p=&i;  //const是顶层的,不能给p赋值 *p=0;    //正确:通过p改变对象的内容是允许的,现在i变成了0 和其他初始化过程一样,当用实参初始化形参时会忽略掉顶层const.换句话说,形参的顶层const被忽略

关于Java中形参与实参的理解

今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别).参考网站http://www.cnblogs.com/binyue/p/3862276.html.下面我将通过次博文记录自己的理解,还望能够帮助再学Java或者复习Java的朋友们. 一.基本类型与引用类型在内存中的保存内容 Java中的变量分为基本类型和引用类型两种.基本类型的变量保存数值本身,而引用类型的变量保存的是引用值,即指向内存空间的地址. 基本类型包括:byte,char,int

//形参改变实参

//形参改变实参 #include<stdio.h> void change(int *n); int main(){ int a = 90; change(&a); printf("%d\n",a); return 0; } void change(int *n){ *n = 10; }

C语言形参与实参的概念及swap函数

形式参数(formal argument)和实际参数(actual argument)是什么? void function(int n); //n为形式参数 int main { int times=5; function(times); //times为实际参数 } void function(int n) { for(int i=0;i<n;i++) printf("hello\n"); } 在声明一个参数时就创建了一个叫形式参数的变量,在上面的例子中形式参数是叫做n的变量.

C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习

1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在一个同名的局部变量,不管他们的类型是否相同,都是不允许出现同名的. 看下面的代码示例: 1 //这其中的strName就是一个形参也是一个变量,不允许出现同名的局部变量 2 public void SayHelloTo(string strName) 3 { 4 Console.WriteLine(

深刻理解Java中形参与实参,引用与对象的关系

声明:本博客为原创博客,未经允许,不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/30989755 我们都知道,在Java中,除了基本数据类型之外,其他的都是引用类型,当它们作为函数参数时,传递的也是引用,通过引用可以改变对象的值,很多人便因此而忽略形参与实参,引用与对象的关系问题.废话不多说,先看下面一个例子: import java.util.*; public class Student { private String