将数组传递给C中的函数

维祖纳

考虑以下C程序:

#include <stdio.h>

void swap(int []); 

int main(void) {
     int a[3] = {1, 2, 3};
     swap(a);
     printf("%d %d %d\n", a[0], a[1], a[2]);
     swap(&a[1]);
     printf("%d %d %d\n", a[0], a[1], a[2]);
     return 0; 
}

void swap(int x[]) {
     int temp = x[0];
     x[0] = x[1];
     x[1] = temp; 
}

谁能解释以下代码为何给出输出的原因
2 1 3
2 3 1

而不是
2 1 3
1 2 3

我知道swap(a)交换a[0]a[1]但我不确定如何swap(&a[1])运作。在两种情况下,我们都将数组传递a给函数swap,不是吗?因此,我的假设是,swap(&a[1])应当再次交换a[0]a[1],使我们回原来的顺序2 3 1

编辑:此代码是按预期编写的。我只是想看看如果我们将第一个元素以外的其他元素的地址传递给函数会发生什么。显然,如果我传入&a[n]函数,它将忽略之前的所有元素a[n]并将其视为a[n]第一个元素?

阿什瓦尼

您的交换函数将整数地址和地址作为输入,并将该地址处的元素与下一个地址处的元素交换。

swap(a) is same as swap(&a[0])
It will swap element at index 0 with element at index 1.
Now your array becomes {2,1,3}
swap(&a[1]) swaps element at index 1 with element at index 2.
So your array now becomes {2,3,1}

请记住,实际上传递数组时,您传递的是索引0(&a[0]的元素地址

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将2d数组传递给C ++中的函数

来自分类Dev

将2D数组传递给c中的函数

来自分类Dev

将字符串数组传递给C中的函数

来自分类Dev

将数组的指针传递给C中的函数

来自分类Dev

将3维数组传递给C中的函数

来自分类Dev

将特定大小的数组传递给C中的函数

来自分类Dev

将结构数组传递给C中的值函数

来自分类Dev

将数组传递给erlang中的函数

来自分类Dev

将数组传递给PostgreSQL中的函数

来自分类Dev

将数组传递给erlang中的函数

来自分类Dev

C ++直接将数组传递给函数

来自分类Dev

将C数组传递给Rust函数

来自分类Dev

将char数组传递给函数C ++

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

将数组传递给类函数C ++

来自分类Dev

将函数传递给C ++中的函数

来自分类Dev

将指针传递给C ++中的函数

来自分类Dev

将数组传递给函数

来自分类Dev

将数组传递给函数

来自分类Dev

将标准数组和动态数组传递给C ++中的函数

来自分类Dev

如何通过将数组传递给 c# 中的函数来返回数组的单个索引?

来自分类Dev

将数组传递给函数-指针与引用(C ++与C)

来自分类Dev

将指针(数组名称)传递给C / C ++中的函数

来自分类Dev

将3D数组作为参数传递给C中的函数

来自分类Dev

通过将指针传递给C中的函数来创建2D数组

来自分类Dev

将char *传递给C中的函数后,如何指向预期的char数组?

来自分类Dev

C ++ / Arduino将存储在PROGMEM中的2D数组的指针传递给函数

来自分类Dev

无法将2D数组传递给C ++中的辅助函数

来自分类Dev

如何将500个指针的一维数组传递给C中的函数