[ad_1]
関数があり、すべての要素を印刷して変更する方法を知っています。印刷せずにインデックスで配列を返すにはどうすればよいですか? または、たとえば return arr 専用の関数をもう 1 つ作成します。 [3]
私が試したこと:
void a(int arr[]、int arr_el、int i)
{
printf(“%d\n”, arr[i]);
}
intメイン(){
int arr[3] = {24, 6, 18};
int arr_el=3;
int i;
();
解決策 1
試す:
C
int* returnArray(int arr[]) { ... return arr; } int main() { printf("Hello World\n"); int a[3] = {1, 3, 5}; int *b = returnArray(a); printf("%d\n", b[1]); return 0; }
配列とポインターは非常に似ています。配列の名前は、(言語定義によると) 最初の要素へのポインターです。
したがって、配列がある場合は、それをポインターのように扱うことができ、その逆も同様です。
解決策 2
配列の項目を 1 つだけ返すのは非常に簡単です。
C++
#include <stdio.h> #include <stdlib.h> int get_item( int a[], size_t size, size_t index) { if ( index < size ) return a[index]; else return 0; // there is actually no meaningful way to signal the error } int main() { int arr[] = {1, 42, -12}; printf("arr[%u] = %d\n", 1, get_item(arr, 3, 1)); return 0; }
解決策 3
次の方法で配列を返すことができます。
C++
int* getArray() { int *array = malloc( 5 * sizeof(int)); // do stuff with that array return array }
重要: 返された配列にはメモリ管理が必要なので、完了したら free を使用してください。 新規および無料についてお読みください。
注: C++ には、ベクトルのような組み込み配列があります。
[ad_2]
コメント