我只是想问一下如何将数组的地址传递给函数。
void me( int *a ) {
printf("%d\n", *a); // that gives me 11
}
int main () {
int x[3] = { 11, 12, 13 };
me(&x[0]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是如果我想通过整个数组而不是通过重复 me(&x[//the position I want to pass]);
是否可以?
所有其他答案都很好,只是要补充一点,形成我的观点。
您应该向函数添加一个参数,以便能够将其用于不同长度的不同数组,因此将数组的长度传递给me函数
#include <stdio.h>
void me( int *a, size_t length ) {
size_t i;
for (i=0; i<length; i++)
printf("Element %zu is %d\n", i, a[i]);
}
int main () {
int x[3] = { 11, 12, 13 };
me(x, sizeof(x)/sizeof(x[0]));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用sizeof返回数组的字节长度。因此,将它与数组单个元素的大小(以字节为单位)相除。结果是数组的元素数。