How do i pass an array function without using pointers

前端 未结 7 880
广开言路
广开言路 2021-02-05 21:04

I have been asked in an interview how do you pass an array to a function without using any pointers but it seems to be impossible or there is way to do this?

相关标签:
7条回答
  • 2021-02-05 21:27

    You can put the array into a structure like this:

    struct int_array {
        int data[128];
    };
    

    This structure can be passed by value:

    void meanval(struct int_array ar);
    

    Of course you need to now the array size at compile time and it is not very wise to pass large structures by value. But that way it is at least possible.

    0 讨论(0)
  • 2021-02-05 21:33

    How about varargs? See man stdarg. This is how printf() accepts multiple arguments.

    0 讨论(0)
  • 2021-02-05 21:33

    There is one more way: by passing size of array along with name of array.

    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 */
    } 
    
    0 讨论(0)
  • 2021-02-05 21:36

    simply pass the location of base element and then accept it as 'int a[]'. Here's an example:-

        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]);
        }
    
    0 讨论(0)
  • 2021-02-05 21:45
    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);
    }
    
    0 讨论(0)
  • 2021-02-05 21:48

    Put the array into a structure:

    #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;
    }
    
    0 讨论(0)
提交回复
热议问题