ポインタを使用して、C の関数から配列を返すことができます。ただし、配列が適切に割り当てられていない場合、問題が発生する可能性があります。
この例では、スタックに割り当てられている配列を返そうとしています。これにより、関数が返されたときに未定義の動作が発生する可能性があります。
この問題を回避するには、new 演算子を使用してヒープに配列を割り当てることができます。その後、割り当てられた配列へのポインタを返すことができます。
int* uni(int *a, int *b) {
int *c = new int[10];
int i = 0;
while (a[i] != -1) {
c[i] = a[i];
i ;
}
for (; i その後、返されたポインターを使用して配列にアクセスできます。
int main() {
int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
int b[5] = {1, 3, 4, 3, 0};
int *c = uni(a, b);
for (int i = 0; i これは出力します:
1 3 3 8 4 1 3 4 3 0
もう 1 つの方法は、構造体を使用して配列をラップすることです。これは値で返すことができ、内部の配列も含めて構造体がコピーされます。
struct myArray {
int array[10];
};
myArray uni(int *a, int *b) {
myArray c;
int i = 0;
while (a[i] != -1) {
c.array[i] = a[i];
i ;
}
for (; i これは次のように出力されます:
1 3 3 8 4 1 3 4 3 0
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3