我是 C 的新手,我正在寻找将数组传递给函数并访问元素的方法。
我发现有3种方法可以做到这一点。
- 传入一个数组,函数将参数指定为数组的类型
- 传入一个数组,函数将参数指定为指针类型
- 传入第一个元素的地址(其实这个地址就等于数组地址,我觉得和方法2一样)
我不明白的是,使用方法1.传入的数组的地址与函数中的数组参数的地址不同。使用方法1和方法2有什么区别。
代码:
#include <stdio.h>
void pass_by_array(int x[]);
void pass_by_pointer(int *x);
int main(void){
int i;
int base[5] = {3, 7, 2, 4, 5};
printf("address of first element in main %p\n", &base[0]);
printf("address of array in main %p \n\n", &base);
pass_by_array(base);
pass_by_pointer(base);
}
/* Pass in the array as type of int x [] */
void pass_by_array(int x[]){
printf("address of first element passed in: %p \n", &x[0]);
printf("address of array passed in: %p \n\n", &x);
}
/* Pass in the array as type of int pointer*/
void pass_by_pointer(int *x){
printf("passing in array by pointer, address: %p",x);
}
输出:
address of first element in main 0xbfcea3ac
address of array in main 0xbfcea3ac
address of first element passed in: 0xbfcea3ac
address of array passed in: 0xbfcea390
passing in array by pointer, address: 0xbfcea3ac%