Что делает левый сдвиг с переменной указателя? - PullRequest
1 голос
/ 11 июля 2019

Допустим, у меня есть unsigned character pointer 'foo' и что я динамически назначил ему память, используя malloc .Что эти операции делают с переменной указателя?Давайте предположим, что bar вызывается со значениями i как 2,4,6,8 соответственно

void bar(int i, unsigned char* foo) {
    *foo++ = i>>24;
    *foo++ = i>>16;
    *foo++ = i>>8;
    *foo++ = i;
}

1 Ответ

3 голосов
/ 11 июля 2019

Сдвиги применяются к i, который не является указателем, это переменная типа int.

Затем результат присваивается тому, на что указывает указатель foo.

Наконец, указатель увеличивается на единицу.

Например, это:

*foo++ = i>>24;

бит сдвигает i на 24 вправо, затем принимает этот результати назначает его там, куда указывает foo.После этого указатель увеличивается на единицу.

...