*(int *)CV = (int)0;
Я смотрел код С и не могу понять эту строку кода. Не могли бы вы интерпретировать это и объяснить, что он делает? БлагодаряНе понимаю эту строку кода С
*(int *)CV = (int)0;
Я смотрел код С и не могу понять эту строку кода. Не могли бы вы интерпретировать это и объяснить, что он делает? БлагодаряНе понимаю эту строку кода С
Он бросает CV
указатель на int
, разыменовывает сказал указатель и присваивает указываемый int
значения 0
.
Here's a demo. Также в этой ситуации (int)0
такой же, как 0
, поэтому его можно изменить, чтобы сделать вещи немного проще.
Сначала он вводит CV
в указатель int, а затем устанавливает целое число, на которое оно указывает на ноль.
Литье 0
на самом деле не требуется.
Вы часто видите его в таких ситуациях, как:
void setIntWithVoidPtr (void *p) {
*((int*)p) = 42;
}
Они литья переменной CV
к типу int *
(указатель на INT), затем разыменования его, с внешней *
и присваивание что значение 0
отлито для int
.
Похоже CV
является void *
, который первым отлиты в int *
, затем разыменовываются и значение устанавливается равным 0. int
в (int)0
, хотя, кажется ненужным.