使用C中的指针创建/打印数组

时间:2014-03-22 19:29:18

标签: c arrays pointers

因此,对于一些Uni工作,我需要使用函数创建一个数组(我第一次使用C函数和指针)但是将数组存储为指针,因为我不认为C可以在函数中使用数组?然后还使用另一个函数打印出数组中的每个元素。我在main中使用的代码是:

    int* x = get_lotto_draw();
    print_array(x);

然后我的职能是:

int* get_lotto_draw() //Returns an array of six random lottery numbers 1-49
{
     int min = 1;
     int max = 49;
     int counter = 0;

     srand(time(NULL));
     int r = rand()%(max-min)+min;

     int *arrayPointer = malloc(6 * sizeof(int));

     for(counter = 0; counter <= 5; counter++)
     {
                 arrayPointer[counter] = r;
     }  

     return arrayPointer;
}



void print_array(int * array) //Print out the content of an array
{
     int i = 0;
     int printerArray[6] = {0, 0, 0, 0, 0, 0};

     for(i = 0; i <= 5; i++)
     {
           printerArray[i] = array[i];
     }

     printf("array = %d", array);
     printf("printerArray = %d", printerArray);

     for(i = 0; i <= 5; i++)
     {
           printf("Array element %d : %d\n", i, printerArray[i]);
     }
}

但我做错了,要么数组没有正确创建,要么打印不能正常工作。谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

以下两行可能引发未定义的行为

 printf("array = %d", array);
 printf("printerArray = %d", printerArray);

你不能在这里使用%d,因为arrayprinterArray会衰减到此上下文中的指针,为了打印指针,你应该使用%p和将您的数组转换为void *(感谢 @ user3447428 ,因为他对演员的评论)

答案 1 :(得分:1)

你想要的是:

void print_array(int * array) //Print out the content of an array
{
     int i = 0;

     for(i = 0; i <= 5; i++)
     {
           printf("Array element %d : %d\n", i, array[i]);
     }
}