#include <stdio.h>
int* createReverseArray(int *array, int size)
{
int i;
int newArray[size];
for(i=size-1; i>=0; i--)
{
newArray[i] = array[size-i-1];
}
return newArray;
}
int main(void) {
int myArray[] = {1,2,3,5,1};
int myArray2[] = {1,2,3,4,2,1};
int i;
int size = sizeof(myArray)/sizeof(int);
printf("Size: %d\n", size);
int* newArray = createReverseArray(myArray, size);
for(i=0; i<size; i++)
{
printf("%d, ", newArray[i]);
}
return 0;
}
Cに期待される出力を与えるのではなく、私は配列へのポインタを返し、その結果を印刷しようとすると、I各アレイスポットへのポインタを印刷していると思いますか?私はあまりよく分からない。配列へのポインタを返すことは、私はcreateReverseArray関数内の配列を印刷し、正しい出力を得た
これは戻します
サイズ:5
12341002、1、-10772231820、-1077231812、1074400845、
をdiynamicallyメモリを割り当てると、それへのポインタを返すことができ
はStackOverflowの上で前について尋ねてきました。関数内で割り当てられたメモリへのポインタを返すと、その関数はなくなります。 Go言語はこの作業を行い、そのメモリをヒープに移動するほどスマートですが、Cはこれを行うことができません。この配列のためのスペースを自分でmallocする必要があります。 –
@RayToal:これは1000回以上しか聞かれていません...そして、はい、それは言語の基本的な概念から始まっていないことから生じる非常に基本的なエラーです。 1つは良いCの本から取得します。 – Olaf