0

一連の数値が連続している場合、for ループを使用して値を入力できることを認識しているため、「非連続」と指定します。しかし、値に関係がない場合に値を割り当てる方法がわかりません。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>  // edited in for the use of memcpy


int main()
{
    static const size_t kBufferSize = 6;

    int *nums = malloc(kBufferSize * sizeof(int));

これが機能しないことは承知しています:

    //nums[] = { 4, 8, 15, 16, 23, 42 }; incorrect
    memcpy(nums, (int []){ 4, 8, 15, 16, 23, 42 }, kBufferSize * sizeof(int)); // corrected

mallocされた配列を使用せずに配列を再割り当てしているため、メモリリークが発生します。

    int *reversed = malloc(kBufferSize * sizeof(int));

    for (int i = 0; i < kBufferSize; i++)
    //  reversed[4 - i] = nums[i];   incorrect
        reversed[5 - i] = nums[i]; //corrected
    free(nums);

    for (int i = 0; i < kBufferSize; i++)
        printf("%i\n", reversed[i]);    
    free(reversed);
    return 0;
}
4

1 に答える 1