void swap (int *px, int *py) {
int temp;
temp = *px;
*px = *py;
*py = temp;
}
, который заменит две переменные, что выглядит хорошо для меня.обмен переменных с помощью указателей
теперь, если я изменить его на
void swap (int *px, int *py) {
int *temp;
*temp = *px;
*px = *py;
*py = *temp;
}
уведомление Int * Темп
это работает так или иначе, хотя, но темп разыменовывается без инициализации.
какое значение это не сработает?
нравится, если я хочу сделать метод под названием proc, как я могу гарантировать, что программа выйдет из строя? Кажется, я должен что-то оставить в стеке.
int main() {
int a = 1, b = 2;
proc(/* Some args might go here */);
swap(&a, &b);
}
Это вызывает неопределенное поведение во всем, что я знаю. Выделение и запись в NULL гарантировали бы крах, который я считаю. –
@ Magtheridon96 Это также UB: http://stackoverflow.com/questions/2727834/c-standard-dereferencing-null-pointer-to-get-a-reference –
Возможный дубликат [Неинициализированные указатели в коде] (http: //stackoverflow.com/questions/5870038/uninitialized-pointers-in-code) – ecatmur