申し訳ありません。私は本当にこの問題を定義する方法を知らなかった。void関数を使用して配列を指す
N個の数値の整数配列を宣言し、void関数の乱数でそれを満たす必要がありました。その配列はメインに印刷する必要があります。私は、void関数でprintfを使用することは許されていないので、メインで印刷する方法は、私が推測するポインタを使うことだけです。私が指針で初心者であるので、私の知識は限られています。 Thxは事前に悪い英語のために申し訳ありません。
ここまでは私のコードです。コンパイルすると、セグメント化エラーがマークされます。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void form();
int main()
{
int N, a[100];
printf("Input index: \n");
scanf("%d", &N);
form(N, &a);
printf("Array: \n");
for (int i = 0; i < N; i++) {
printf("a[%d] = %d", i, a[i]);
}
}
void form(int N, int *ptr[100])
{
srand(time(NULL));
for (int i = 0; i < N; i++) {
*ptr[i] = rand() % 46;
}
あなたのコンパイラはあなたに叫ぶ必要があります。正しいプロトタイプを使用すると、コードは標準に準拠しておらず、未定義のビヘイビアが呼び出されます。 (それはポインタよりもはるかに基本的です。あなたのCブックの関数と関数宣言についての章はスキップしましたか?) – Olaf
あなたは望む関数で 'printf'を使うことができます。 – user3528438
user3528438これは学校の運動であり、教授はprintfを使わないように教えてくれました。 @Olafこのプロトタイプは正しいですか:void form(int、int)。関数の宣言はうまくいきます。それが私が教えられた方法です。 – Misery