На первом этапе Вы должны научиться использовать realloc.
Причиной первого предупреждения является ваше видение на экране
passing argument 1 of 'realloc' makes pointer from integer without a cast
int i, *arr;
arr = calloc(5, sizeof(int)); \\ Not the right way
arr = (int *) calloc (5,sizeof(int)); \\ makes sense
Вы должны набрать указатель, возвращенный Calloc, прежде чем он будет назначен. Вот почему вы получили предупреждение без приведения.
Примечание
char *arr ; arr = (char *) realloc (5,sizeof(char))
double *char: arr =(double *) realloc (5,sizeof(double))
Полагаю, вы поняли смысл. Введите его в тип указателя, который вы собираетесь назначить. потому что calloc возвращает пустой указатель, и вы должны ввести приведение в нужный вам тип данных, прежде чем использовать его
и насколько мне известно
for(i=0; i<5; i++) scanf("%d", &arr[i]); \\ this is not the way to use pointers
this would be mostly used in arrays !
Это способ использовать указатели
*(arr+1) or *(arr+any_variable) \\
и помните, что, когда вы определяете arr как целочисленный указатель, он увеличивает свой адрес на 2
example arr pointing to 3000 memory location after *(arr+1)
points to 3002 location and if arr pointer is ,char *arr, then
arr pointing to 3000 then *(arr +1 ) now it will point to 3001 location
same for double by 8 and for float 4 .
1 не означает 1, это означает увеличение его на размер указателя, указывающего на.
ну я никогда не замечал такой синтаксис для указателей
&arr[i]
Если это также способ использования указателей, то я рад принять его, я научился другому способу доступа к указателям
but think of using these *(arr+i) mostly
ну вы также можете использовать
(int *) calloc(5, sizeof(int))
\\ the number of bytes allocated by it is 5 * sizeof(int) = 5*2 =10
Спасибо.
и, пожалуйста, пройдите
http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/ и этот сайт действительно многообещающий сайт для начинающих. Надеюсь, вам понравится, и любые сомнения, которые мы здесь, чтобы помочь вам