gpt4 book ai didi

c - 在函数中调用时,数组被修改而不是 int

转载 作者:行者123 更新时间:2023-11-30 16:25:17 25 4
gpt4 key购买 nike

当我运行这个程序时-

#include <stdio.h>
void inc( int num[], int n)
{
int i;
n++;
for(i=0;i<10;i++)
num[i]++;
}

int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int a=2;
inc (arr, a);
int i;
for(i=0;i<10;i++)
printf("%d ", arr[i]);
printf("\n%d ", a);
return 0;
}

我得到了输出-

2  3  4  5  6  7  8  9  10  1                                                                                                                  
2

我明白为什么 int 没有改变,但我不明白为什么数组会改变,因为我没有使用指针来调用数组。我知道该函数将制作 n 的不同副本并分配 n=a,并且所有更改将仅发生在 n 上,而 a 将保持不变。为什么数组会改变?

最佳答案

在 C 语言中,除了 few cases ,数组名称衰减(=隐式转换)为指向其第一个元素的指针。

这个

void inc(int num[], int n)

与此完全相同:

void inc(int *num, int n)

关于c - 在函数中调用时,数组被修改而不是 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53455558/

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