Вот код:Сдал параметр изменяется значение
#include <stdio.h>
#include <stdlib.h>
void foo(int* ptr) {
printf("ptr is %x\n", ptr);
}
void main() {
int* ptr = (int*)malloc(sizeof(int));
printf("ptr is %x\n", ptr);
foo(ptr);
free(ptr);
}
... И he're выход:
ptr is 0x007446c0
ptr is 0x00000000
... И вот вопрос:
Почему это происходит мне???
рискуя быть одной и той же сломанной записью, все остальные, не бросать malloc() в C - использовать «int * ptr = malloc (sizeof (int)); –
@KScottPiel Почему? –
@ Jacob Spire Смотрите это: http://stackoverflow.com/questions/1565496/specifically-whats-dangerous-about-casting-the-result-of-malloc –