c - 从不同的函数创建和列出数组
问题描述
我被要求定义一个array_print()
接受两个参数的函数:
int *ptr
表示指向整数数组的指针int array
表示数组的大小
并列出数组的元素而不返回任何值;
一个array_create()
接受一个参数的函数:
int array
表示数组的大小
并返回一个指向该数组的指针;我需要在里面调用这个函数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。
解决方案
您的代码中存在一些问题。
您
malloc
同时调用main
和array_create
。在main
中,您只需要:int *t = array_create(SIZE);
在
array_print
中,您总是取消引用数组中的第一个元素。这将做:printf("Value of array[%d] is %d\n",i, ptr[i]);
推荐阅读
- php - 如何在php中存储和显示数据库中的(C8H9NO2)等化学式
- bots - 我可以为我的 discord bot 加入的每个服务器创建一个不同的 bot 实例,以便在不同服务器中设置的变量不会影响另一个服务器吗?
- matlab - MATLAB | f=@(x) 函数句柄,范围 + conv
- firebase - 如何在flutter中将数据从firestore传递给Typeahead
- google-apps-script - 如何使用应用脚本设置 Google 表单问题的转到部分
- zsh - 每当我打开 iterm 终端时,如何避免显示一堆“[oh-my-zsh]”消息?
- node.js - BIP32 derivedPath nodejs 和 dart(flutter) 中的不同私钥(相同的助记符)
- php - 如何在微软的 php graph api 中访问响应数据
- c++ - 最大化桶的大小,使产品不是立方体
- git - Git错误无法推送“请确保您具有正确的访问权限并且存储库存在。”