Проблема с указателями и функцией в СИ
Создаю массив , получается сначала мы задает кол-во элементов потом запускаем функцию по заполнению массива. Я получается заполнил некий новый массив в функции 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 ...
и попробуйте еще раз.