C语言函数间值传递问题

错误示例

#include <stdio.h>
int * pop() {
int a[3]; // 定义的局部变量a[3]在调用完之后自动释放其空间
int i = 0;
for(; i < 3; i++) {
a[i] = i;
}
return a; // 返回的是地址, 而不是数组a[3]本身,此时a在内存中已经被释放
} void main() {
int b[3];
b = pop();
}

正确示例

#include <stdio.h>

/**
* @Param a[] 指向数组的地址
* @Param n 数组长度
*
* 无需 return,只需通过传入的地址就可改变对应源数据
*/
void pop(int a[], int n) {
int i;
for(i = 0; i < n; i++) {
a[i] = i;
   }
} void main() {
int b[3];
pop(b, 3);
printf("%d\n", b[2]);
}

C语言函数值传递问题的更多相关文章

  1. C语言指针传递详解

    传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问,要在某个函数中修改数据,需要用指针传递数据,当数据是需要修改的指针的时候,就要传递指针的指针,传递参数(包括指针)的时候,传递 ...

  2. C语言 值传递和地址传递

    不少同学在学到C语言的指针部分时感到很困惑,对经常提到的"值传递"和"地址传递"两个概念弄不 明白.实际上,因为地址本身也可以作为一个特殊的"值&qu ...

  3. c语言数组传递

    转自:http://blog.csdn.net/xgmiao/article/details/9570825 点击打开链接 数组作为函数实参: C语言中数组作为函数实参时,编译器总是将其解析为指向数组 ...

  4. c语言函数传递数组

    1.传递数组,打印不出来 #include <stdio.h> void solve() { printf(]); } int main() { int i; ;i<n;i++) { ...

  5. c++之函数值传递和引用传递解析----关键在于理解函数return的实现机制(内存分配)

    函数调用过程解析 func里的a存储在调用fun函数时开辟的栈空间里,这块栈只在调用func时对func可用,调用结束后返回的a,其实是暂存在寄存器里的(一般情况下是eax),而返回到main里时,m ...

  6. python函数值传递还是引用传递

    c/c++中有值传递引用传递的区别.但是python中是值传递还是引用传递呢?首先看python中对变量的定义 "python中变量是指向某个内存的, 而内存中的内容是不可变的." ...

  7. C语言笔记--传递结构指针以及值传递,址传递

    #include <stdio.h> #include <windows.h> #include <mmsystem.h> #include <string. ...

  8. golang 与 c语言 之间传递指针的规则提案

    https://go.googlesource.com/proposal/+/master/design/12416-cgo-pointers.md https://github.com/golang ...

  9. C++学习014函数值传递和地址传递

    当我们给一个函数传参数的时候,可以直接值传入函数,也给可以把一个地址传入函数 区别就是一个本身不被改变,而另一本身也在改变, 在开发时候都会用到, 这里做下记录 #include <iostre ...

  10. Go语言函数

    目录 函数定义 函数返回多个值 函数参数 Go 语言函数值传递 Go语言函数引用传递 函数用法 函数作为值 匿名函数 闭包 方法 不定参数的函数 init函数 内建函数 函数调用机制 总结 函数定义 ...

随机推荐

  1. [题解] Atcoder Regular Contest ARC 151 A B C D E 题解

    点我看题 昨天刚打的ARC,题目质量还是不错的. A - Equal Hamming Distances 对于一个位置i,如果\(S_i=T_i\),那么不管\(U\)的这个位置填什么,对到\(S\) ...

  2. 在vue中引入elementui

    文章目录 1.下载安装 2.在main.js中引入 3.可以根据封装好的组件自行调用 官网地址:https://element.eleme.cn/#/zh-CN 1.下载安装 npm i elemen ...

  3. 痞子衡嵌入式:i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad. 最近碰到一个客户,他们在 i.MX ...

  4. Vitepress搭建组件库文档(下)—— 组件 Demo

    上文 <Vitepress搭建组件库文档(上)-- 基本配置>已经讨论了 vitepress 搭建组件库文档的基本配置,包括站点 Logo.名称.首页 home 布局.顶部导航.左侧导航等 ...

  5. C#中ref和out关键字的应用以及区别(参数修饰符)

    ref ref的定义 ref是reference的缩写,通过引用来传递参数的地址,ref基本上是服务于值类型的 ref的使用 //不使用 ref; void Method(int myRefInt) ...

  6. 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置

    CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...

  7. Ubuntu 下安装 redis 并且设置远程登陆和密码

    安装redis sudo apt-get install -y redis-server 更改配置 sudo vim /etc/redis/redis.conf 如果不知道怎么找 直接在命令行模式下输 ...

  8. Codeforces Round #811 (Div. 3)D. Color with Occurrences

    题目大意:给出一个文章t和n个字符串s1,s2...sn: 问能否用这n个字符串将整个文章覆盖: 思路:贪心(最小区间覆盖) 记录每个字符串能够覆盖的所有位置(起点,终点,编号) 排序后贪心的求出是否 ...

  9. Oracle部署,关于日志文件系统选择(硬盘格式化、挂载)

    之前部署过好多Oracle服务,采用的日志文件系统一直是ext3.但是我观察到很多人在格式化/挂载数据盘时,采用的日志文件系统类型有ext3.ext4.xfs等,这不禁让我发出疑问,哪个类型的数据处理 ...

  10. VO层

    springboot中vo的作用: VO:View Object,视图层,其作用是将指定页面的展示数据封装起来,通常用于业务层之间的数据传递. 一般将vo层放置在model层下 类似于将前端页面传输的 ...