美文网首页
C语言 函数传参的理解

C语言 函数传参的理解

作者: 奈蜇 | 来源:发表于2022-10-03 17:16 被阅读0次

C语言有点东西 不像JAVA 不需要复杂考虑参数传递问题

java就两种参数传递方式 值传递AND引用传递(类似指针)

java: 8种基本数据类型全是值传递 其他数据类型都是引用传递

有一个特例String 虽然说是引用传递 但是效果却和值传递类似

为什么要纠结这个问题

//定义了一个函数
void add(int x,int y,int z){
        x = y + z;
}

int a = 1;
int b = 2;
int c = 3;

System.out.println(a);
add(a,b,c);
System.out.println(a);


//运行结果
1
1

我们预期是想让a变成5,但是实际程序运行后a的值还是没有改变。这个就是值传递 函数内的x并不是外部的a

由于java并没有真的的指针就不写修复的方法了 其实也没必要...

重点来了 C是有指针的 我们要修复这个问题

//换一种定义
void add(int *x,int *y,int *z)
{
        *x = (*y) + (*z);
}

int a = 1;
int b = 2;
int c = 3;

printf(a);
add(&a,&b,&c);
printf(a);


//运行结果
1
5

int *x 是定义一个int指针

(*y) 是这个指针的指向的内存 //括号无实际意义只是为了更好的理解这个是一个值了,不是指针了

*x = 1+2 是修改这个指针 指向的内存 里面的值

&a 是获取这个变量的指针

单纯的一个记录给自己看的帖子

相关文章

  • C语言 函数传参的理解

    C语言有点东西 不像JAVA 不需要复杂考虑参数传递问题 java就两种参数传递方式 值传递AND引用传递...

  • 函数变参的使用

    介绍C/C++,java,和go语言对函数变参的使用。 1. C/C++语言的变参 1.1 变参函数声明 变参函数...

  • iOS多线程之pthread的简单使用

    前言 pthread是c语言编写的,基本用不到,了解一下就好. 线程创建代码 传参:C语言传参 oc传参

  • 06-GoLang函数

    函数格式 C语言中 Go语言中 C语言函数的类型 1.没有返回值没有形参的函数 .2.有返回值没有形参的函数 3....

  • vector 作为函数参数

    参考 C++(笔记)容器(vector)作为函数参数如何传参 vector作为参数的三种传参方式

  • lc25 关于链表

    复习知识点:1)链表反转2)关于指针。理解C++中指针传参,大概指针传参也是传的形参(like int数字),但是...

  • Objective-C 闭包声明(Block)

    本地变量 属性 方法参数 方法调用传参 C函数参数 类型定义

  • Unity3D与iOS通信

    unity3d调用iOS函数,实现传参以及得到返回值;C#: 在需要调用函数传参的时候调用即可 OC:建立一个OC...

  • 函数

    简单函数格式 定义 调用函数 传参函数格式: 传参数 定义 注意 重点 实例(简单) 实例(传参) 实例函数(调用...

  • C#日记——委托

    很多人说C#和JAVA很像,但也有很多地方不同,委托就是一个C#特有的东西委托可以理解为C语言里的函数指针,只要参...

网友评论

      本文标题:C语言 函数传参的理解

      本文链接:https://www.haomeiwen.com/subject/sloyartx.html