gpt4 book ai didi

c - dought从c中的函数返回数组和int数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:47 26 4
gpt4 key购买 nike

代码 1


    main()
{
int i ,a[5];
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
yo(a);
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
}
void yo(int a[5])
{
int i;
for(i=0;i<5;i++)
{
a[i]=a[i]+1;
}
}

在上面没有返回值的代码中(我在函数中返回 void 数据类型)数组 'a' 在主函数中得到更新但是当我不使用数组并使用普通 int 数据类型时,值会' nt 获取更新见代码 2


main()
{
int a;
a=50;
yo(a);
printf("%d",a);
}
void yo(int z)
{
z=150;
}

最佳答案

是因为数组a[]是作为指针传递的,不是数组的拷贝,直接修改了数组。如果您将函数声明为

void yo(int *a)

这将以完全相同的方式工作。但是,如果您传递单个 int,例如

void yo(int a) {
a += 1;
}

该函数只接收 int副本,它不会影响调用者。要影响传递的变量,您需要

void yo(int *a) {
*a += 1;
}

你猜怎么着?这与我之前传递数组时所做的声明相同。当您传递一个指针时,它可以被视为一个数组,或一个单一的值——即长度为 1 的数组。

关于c - dought从c中的函数返回数组和int数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30130164/

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