如何将数组的地址传递给函数?

Dis*_*ame 2 c arrays pointers

我只是想问一下如何将数组的地址传递给函数。

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]);

是否可以?

LPs*_*LPs 6

所有其他答案都很好,只是要补充一点,形成我的观点。

您应该向函数添加一个参数,以便能够将其用于不同长度的不同数组,因此将数组的长度传递给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返回数组的字节长度。因此,将它与数组单个元素的大小(以字节为单位)相除。结果是数组的元素数。