Загрузка данных


#include <stdio.h>
#include <stdlib.h>

// #define SAFE_MALLOC(ptr, n) \
//     (_Generic((ptr), \
//         int*:       (int*)malloc(sizeof(*(ptr)) * (n)), \
//         double*:    (double*)malloc(sizeof(*(ptr)) * (n)), \
//         float*:     (float*)malloc(sizeof(*(ptr)) * (n)), \
//         char*:      (char*)malloc(sizeof(*(ptr)) * (n)), \
//         default:    malloc(sizeof(*(ptr)) * (n)) \
//     ))
    

int input(int *arr, int *n) {
    if (scanf("%d", n) != 1) return -1;
    arr = (int*)malloc(sizeof(*arr) * *n);
    if (arr == NULL) return -1; 

    printf("Память была веделена вот указатель:\nадресс = %p\nзначение = %d\n\nЗНАЧЕНИЕ n = %d\n", arr, *arr, *n);
    
    for (int i = 0; i < *n; ++i) {
        if (scanf("%d", &arr[i]) != 1) return -1;
        printf("%p\n", &arr[i]);
    }
 
    printf("Массив под номером [0] = %d\nПОСЛЕДНИЙ АДРЕC = %p\n", arr[0], arr);
    printf("Массив под номером [0] = %d\nПОСЛЕДНИЙ АДРЕC = %p\n", arr[0], arr);

    
    return 0;
}

void sort(int *arr, int *n) {
    printf("началось");
    for (int i = 0; i < *n; ++i) {
        for (int j = 0; j < *n - i - 1; ++j)
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
    }
    printf("здохло");

}

// void output(int *arr, int *n) {
//     for (int i = 0; i < *n; ++i) {
//         if (arr[i] == *n-1)
//             printf("%d", arr[i]);
//         else %p\n ПЕРВЫЙ ЭЛЕМЕНТ [0] = %d", arr, *arr);

//             printf("%d ", arr[i]);
//     }
// }

int main(void) {
    int *arr = NULL;
    int n = 0;

    int valid_input = input(arr, &n);

    if (valid_input) {
        printf("n/a");
        return 0;
    }
    
    printf("АДРЕС ЛАСТА %p\n ПЕРВЫЙ ЭЛЕМЕНТ [0] = %d", arr, *arr);
    free(arr);


    // sort(arr, &n);
    // output(arr, &n);
    return 0;

}