Проблема с указателями и функцией в СИ

Создаю массив , получается сначала мы задает кол-во элементов потом запускаем функцию по заполнению массива. Я получается заполнил некий новый массив в функции createMas, возвращаю его адрес в указатель. Но почему то в итоге адрес переменой p не равен адресу указателя * pArray.

#include <stdio.h>
#include <malloc.h>
#include <locale.h>

int createLenArray() {
    setlocale(LC_ALL, "Russian");
    int l;
    printf("Введите количество элементов в массиве (натуральное положительное число): ");
    scanf("%u", & l);
    return l;
}


int createMas(unsigned int l) {

    int* p = (int*)calloc(l, sizeof(int));

    for (int i = 0; i < l; ++i) {

        printf("Введите %d элемент массива: ", i+1);
        scanf("%d", &(p[i]));

    }

    printf("\n%p", p);

    return p;
}


int main() {


    unsigned int len = createLenArray();
    int* pArray = createMas(len);

    printf("\n%p",pArray);


    
}

Ответы (1 шт):

Автор решения: Harry

Что вы хотите?

int createMas(unsigned int l) {

Возврат int, а возвращаете? int*.

Язык С слишком доверчивый, он верит, что программист знает что творит :) С++ уже обложил бы матом и предложениями подумать :)

Например, если вы работаете в 64-разрядной системе, int - 4 байта, а int* - 8 байт... дальше пояснять?

Напишите

int * createMas ...

и попробуйте еще раз.

→ Ссылка