c语言数组传入函数
1 数组作为参数传入函数
在C语言中,数组可以作为参数传递给函数。这为程序设计带来了很大的灵活性。
传递数组作为参数的过程中,函数接收到传递的数组时,实际上只是接收到数组的首地址。因此,传递数组时要注意实际传递的是数组的首地址,而不是整个数组本身。
假设我们有一个数组a[],我们可以将它传递给一个函数:
```
include <stdio.h>
void fun(int a[], int len) {
int i;
printf("fun: ");
for(i=0; i<len; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int main() {
int a[5] = {1,2,3,4,5};
fun(a, 5);
return 0;
}
```
在这个例子中,我们定义了一个函数fun(),该函数接收一个整形数组a[]和数组长度len。在main函数中,我们创建了一个长度为5的数组a[],然后调用fun()函数并将数组a[]作为参数传递给函数。
函数fun()接收到参数后,可以像使用普通数组一样使用这个数组。在上面的例子中,函数输出了数组a[]中的每个元素。
2 数组传递给函数的两种方式
C语言中,数组传递给函数时有两种方式:
1. 传递数组的指针
2. 传递数组的首元素
2.1 传递数组的指针
传递数组的指针是最常用的传递数组的方式。在传递数组的指针时,实际上传递的是数组的首地址。因此,在函数内部可以通过指针访问数组中的元素。
结构体数组不能作为参数传递给函数下面是一个传递数组指针的例子:
```
include <stdio.h>
void fun(int *a, int len) {
int i;
printf("fun: ");
for(i=0; i<len; i++) {
printf("%d ", *(a+i));
}
printf("\n");
}
int main() {
int a[5] = {1,2,3,4,5};
fun(a, 5);
return 0;
}
```
在上面的示例中,我们仍然有一个名为a[]的整型数组。我们将数组a[]作为指针传递给函数fun()。在函数fun()内部,我们使用指针与数组a[]中的元素进行交互。
2.2 传递数组的首元素
C语言中,数组的各个元素在内存中是连续排列的,因此数组名称也代表第一个元素的地址。因此,我们可以传递数组名称,以便访问数组元素。
下面是一个传递数组首元素的示例:
```
include <stdio.h>
void fun(int a[], int len) {
int i;
printf("fun: ");
for(i=0; i<len; i++) {
printf("%d ", *(a+i));
}
printf("\n");
}
int main() {
int a[5] = {1,2,3,4,5};
fun(a, 5);
return 0;
}
```
在上述示例中,我们使用了数组的名称a[]来传递数组的首元素。在函数fun()中,我们使用指针访问数组中的元素。
3 在函数中修改数组元素的值
在C语言中,当我们传递数组给函数并在函数内部修改数组元素时,我们必须使用数组的指针,以便在内存中修改数组中的值。
下面是一个修改数组元素的示例:
```
include <stdio.h>
void fun(int *a, int len) {
int i;
for(i=0; i<len; i++) {
*(a+i) = 2*(i+1);
}
}
int main() {
int a[5] = {1,2,3,4,5};
fun(a, 5);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论