首页 > 解决方案 > 从不同的函数创建和列出数组

问题描述

我被要求定义一个array_print()接受两个参数的函数:

并列出数组的元素而不返回任何值;

一个array_create()接受一个参数的函数:

并返回一个指向该数组的指针;我需要在里面调用这个函数main()来创建一个数组并调用array_print()它来打印它的元素。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#define MAX  100
#define SIZE  10

void array_print(int *ptr, int array) {
    for (int i = 0; i < array; i++){
        printf("Value of array[%d] is %d",i, *ptr);
        printf("\n");
    }
}

int* array_create(int array) {
    int *t = malloc(SIZE * sizeof(int));
    for (int i = 0; i < SIZE; i++) {
        t[i] = rand() % MAX;
    }
    return t;
}

int main() {
  int *t = malloc(SIZE * sizeof(int));

  array_create(SIZE);
  array_print(t, SIZE);
  free(t);
  return 0;
}

我应该在间隔(0,MAX)中输入输出随机元素,但我得到了这个。

Value of array[0] is 0
Value of array[1] is 0
Value of array[2] is 0
Value of array[3] is 0
Value of array[4] is 0
Value of array[5] is 0
Value of array[6] is 0
Value of array[7] is 0
Value of array[8] is 0
Value of array[9] is 0 

有人可以更正我的代码,使其输出随机元素而不是 0。

标签: carrays

解决方案


您的代码中存在一些问题。

  1. malloc同时调用mainarray_create。在main中,您只需要:

    int *t = array_create(SIZE);
    
  2. array_print中,您总是取消引用数组中的第一个元素。这将做:

    printf("Value of array[%d] is %d\n",i, ptr[i]);
    

推荐阅读