0

我有这个代码:

#include <stdio.h>

void sample(int b[3])
{
    //access the elements present in a[counter].
    for(int i=0;i<3;i++)
        printf("elements of a array are%d\n",b[i]);
}        

int main()
{
    int count =3;
    int a[count];
    int i;
    for(i=0;i<count;i++)
    {
        a[i]=4;
    }

    for(i=0;i<count;i++)
    {
        printf("array has %d\n",a[i]);
    }
    sample(//pass the array a[count]);

}

main()我想通过将其作为该函数的参数传递来访问在外部用户定义函数中在此主函数中声明的数组。我怎样才能做到这一点?

4

5 回答 5

2

期望它的函数通常必须知道数组在哪里以及它的大小。为此,您需要传递一个指向数组第一个元素的指针。

您的示例函数可能看起来像

void sample(int *b, size_t count) {
    for(int i = 0; i < count; i++) {
        printf("elements of a array are%d\n",b[i]);
    }  
}

您可以通过传递指向其第一个元素的指针来“传递”数组,当然,也可以传递数组的长度。

sample(a, count);

如果您可以确定数组至少有 3 个元素长,您也可以通过省略 count 参数来简化此操作。

于 2013-10-24T06:23:57.940 回答
1
sample(a); //pass beginning address of array is same as sample(&a[0]);

函数声明

  void sample(int b[]);

函数定义

  void sample(int b[]) // void sample(int *b)
  {  
      //access the elements present in a[counter].
      //You can access  array elements Here with the help of b[0],b[1],b[2]
      //any changes made to array b will reflect in array a
      //if you want to take SIZE into consideration either define as macro or else declare and define function with another parameter int size_array and From main pass size also 


  }
于 2013-10-24T06:20:20.737 回答
0

将参数传递为sample(a);

但是,此代码将不起作用。您不能使用变量作为数组大小传递。

   #include<stdio.h>
   #define SIZE 3
   void sample(int b[]) {
      //access the elements present in a[counter] .
      for(int i=0;i<3;i++){
          printf("elements of a array are%d\n",b[i]);
      }        
   }

   int main() {
   int a[SIZE];
   int i;
   for(i=0;i<SIZE;i++){
       a[i]=4;
   }

   for(i=0;i<SIZE;i++){
       printf("array has %d\n",a[i]);
   }
   sample(a);
  }
于 2013-10-24T06:20:32.080 回答
0

数组总是作为引用传递。您需要将数组的地址传递给实际参数,并在形式参数中使用指针接受它。下面的代码应该适合你。

void sample(int *b)     //pointer will store address of array.
{

     int i;
     for(i=0;i<3;i++)
         printf("elements of a array are%d\n",b[i]);
}        

int main()
{
    int count =3;
    int a[count];
    int i;
    for(i=0;i<count;i++)
{
    a[i]=4;
}

for(i=0;i<count;i++)
{
    printf("array has %d\n",a[i]);
}
sample(a);    //Name of array is address to 1st element of the array.

}
于 2013-10-24T10:59:45.273 回答
0

要将完整的数组传递给函数,您需要传递其基地址 ie&a[0] 及其长度。您可以使用以下代码:

#include<stdio.h>
#include<conio.h>
void sample(int *m,int n)
{
 int j;
 printf("\nElements of array are:");
 for(j=0;j<n;j++)
 printf("\n%d",*m);
}
int main()
{
int a[3];
int i;
for(i=0;i<3;i++);
{
   a[i]=4;
}
printf("\nArray has:");
for(i=0;i<3;i++)
{
    printf("\n%d",a[i]);
 }
sample(&a[0],3)
getch();
return 0;
}
于 2013-10-24T12:06:26.117 回答