gpt4 book ai didi

c - 将函数中声明的局部数组传递给另一个函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:27 25 4
gpt4 key购买 nike


我的标题清楚地表达了我的问题。让我捕获机会:
请看下面的代码:

#include <stdio.h>
int myf2(int *ser){
*ser=4;
printf("\nsecond=%d",*ser);
return 0;
}
int myf1(){
int fil[2];
fil[0]=1;
printf("\nfirst=%d",*fil);
myf2(fil);
printf("\nthird=%d",*fil);
return 0;
}
int main(){
myf1();
}

我期望这样的输出:

first=1
second=4
third=1


输出是:

first=1
second=4
third=4

那么我如何将 fil 数组传递给 myf2 函数,以便第三个 printf 打印 1 而不是 4

你能解释一下为什么我的代码是错误的吗!?我在本地声明这个数组。但正如您所见,它实际上不是本地的 :)

最好的问候

最佳答案

一个变量实际上是两个东西,一个标识符,你给它的名字和一个对象,你命名的东西。

作用域的概念仅适用于标识符:它是代码的一部分,在该代码中,对象可以在您指定的名称下访问。作用域是一个编译时特性。

对象没有作用域,它们有生命周期。对于您在此处使用的局部变量,生命周期从您的执行进入声明该变量的范围时开始,并在您永久离开时结束。在调用 myf2 期间,您的对象继续存在,因此可以毫无问题地访问。

此访问是通过您在调用中传递给函数的指针完成的。由于指针指向原始对象,因此您在此处所做的所有更改都是对原始对象的更改,并且在您从调用返回时仍然可见。

关于c - 将函数中声明的局部数组传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com