因此,对于一些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]);
}
}
但我做错了,要么数组没有正确创建,要么打印不能正常工作。谢谢你的时间。
答案 0 :(得分:1)
以下两行可能引发未定义的行为
printf("array = %d", array);
printf("printerArray = %d", printerArray);
你不能在这里使用%d
,因为array
和printerArray
会衰减到此上下文中的指针,为了打印指针,你应该使用%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]);
}
}