编码的新手,我在做问题学习。在这个问题上,我被困在应该编写代码的地方,该代码接受数组中的输入并使用指针将其打印出来。下面的代码请指出我从哪里得到的错误的。
#include <stdio.h>
#include <stdlib.h>
int* record_array (int *size_ptr);
void print_array (int *array_ptr , int *size_ptr);
int* record_array (int *size_ptr)
{
int *array_ptr = (int*) malloc(*size_ptr * sizeof(int));
for (int index = 0;index < *size_ptr;++index)
{
printf("Enter element at index %d : ", index);
scanf("%d", &array_ptr[index]);
}
return array_ptr;
}
void print_array (int *array_ptr, int *size_ptr)
{
for (int index = 0;index < *size_ptr;++index)
{
printf("%d ",array_ptr[index]);
}
}
int main()
{
int size = 0;
int *array = NULL;
printf("How many elements do you want?");
scanf("%d", &size);
array = record_array(&size);
print_array(array,&size);
free(array);
return 0;
}
答案 0 :(得分:0)
当您测试某些想法时,没有scanf
值。 scanf
对于初学者可能非常棘手。还要使用正确的类型。
您不需要通过引用传递数组的大小。
#include <stdio.h>
#include <stdlib.h>
int* record_array (size_t size);
void print_array (const int *array_ptr, size_t size);
int* record_array (size_t size)
{
int *array_ptr = malloc(size * sizeof(*array_ptr));
for (size_t index = 0;index < size; ++index)
{
array_ptr[index] = index;
}
return array_ptr;
}
void print_array (const int *array_ptr, size_t size)
{
for (int index = 0; index < size; ++index)
{
printf("%d\t%s", array_ptr[index], (index % 6) ? "" : "\n");
}
}
int main()
{
size_t size = 0;
int *array = NULL;
printf("How many elements do you want?");
scanf("%zu", &size);
array = record_array(size);
print_array(array,size);
free(array);
return 0;
}
如果您要使用指针传递大小(并且不要在函数中更改大小)
#include <stdio.h>
#include <stdlib.h>
int* record_array (const size_t *size);
void print_array (const int *array_ptr, const size_t *size);
int* record_array (const size_t *size)
{
int *array_ptr = malloc(*size * sizeof(*array_ptr));
for (size_t index = 0;index < *size; ++index)
{
array_ptr[index] = index;
}
return array_ptr;
}
void print_array (const int *array_ptr, const size_t *size)
{
for (int index = 0; index < *size; ++index)
{
printf("%d\t%s", array_ptr[index], (index % 6) ? "" : "\n");
}
}
int main()
{
size_t size = 0;
int *array = NULL;
printf("How many elements do you want?");
scanf("%zu", &size);
array = record_array(&size);
print_array(array,&size);
free(array);
return 0;
}
请记住,如果传递的指针不是NULL
,请务必对其进行检查,并检查malloc
的结果