访问函数中main中存在的数组

时间:2013-10-24 06:18:22

标签: c

我有这段代码:

#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()之外的用户定义函数中访问此main函数中声明的数组。我怎么能这样做?

5 个答案:

答案 0 :(得分: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参数来简化这一过程。

答案 1 :(得分: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 


  }

答案 2 :(得分: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);
  }

答案 3 :(得分: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.

}

答案 4 :(得分:0)

要将完整数组传递给函数,您需要传递其基址,即&amp; 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;
}