如何在不使用指针的情况下传递数组函数

时间:2011-10-03 11:26:55

标签: c

我在接受采访时被问到如何在不使用任何指针的情况下将数组传递给函数但是它似乎是不可能的或者有办法做到这一点?

7 个答案:

答案 0 :(得分:5)

将数组放入结构中:

#include <stdio.h>
typedef struct
{
  int Array[10];
} ArrayStruct;

void printArray(ArrayStruct a)
{
  int i;
  for (i = 0; i < 10; i++)
    printf("%d\n", a.Array[i]);
}

int main(void)
{
  ArrayStruct a;
  int i;
  for (i = 0; i < 10; i++)
    a.Array[i] = i * i;
  printArray(a);
  return 0;
}

答案 1 :(得分:2)

varargs怎么样?见man stdarg。这就是printf()接受多个参数的方式。

答案 2 :(得分:2)

如果我直接说,那就不可能......!

但您可以通过其他间接方式

执行此操作

1&GT;将所有阵列打包在一个结构中通过值传递结构

2 - ;通过函数

中的变量参数传递数组的每个元素

答案 3 :(得分:1)

您可以将数组放入如下结构中:

struct int_array {
    int data[128];
};

此结构可以通过值传递:

void meanval(struct int_array ar);

当然,您需要在编译时使用数组大小​​,并且按值传递大型结构并不是很明智。但这样至少是可能的。

答案 4 :(得分:0)

void func(int a)
{
   int* arr = (int*)a;
   cout<<arr[2]<<"...Voila" ;
}

int main()
{
   int arr[] = {17,27,37,47,57};
   int b = (int)arr;
   func(b);
}

答案 5 :(得分:0)

只需传递基本元素的位置,然后将其接受为“ int a [] ”。这是一个例子: -

    main()
    {
        int a[]={0,1,2,3,4,5,6,7,8,9};
        display(a);
    }
    display(int a[])
    {
        int i;
        for(i=0;i<10;i++) printf("%d ",a[i]);
    }

答案 6 :(得分:-1)

还有一种方法:通过传递数组的大小和数组的名称。

int third(int[], int ); 

main() {
   int size, i;
   scanf("%d", &size);
   int a[size];
   printf("\nArray elemts");
   for(i = 0; i < size; i++)
       scanf("%d",&a[i]);
   third(a,size);
}
int third(int array[], int size) {
    /* Array elements can be accessed inside without using pointers */
}