Зачем тут создается указатель p? И что за "странная" операция *p = *p = 1? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Ребят, очень нуждаюсь в помощи, помогите понять. Попался мне на мсдн код, в реализации которого вычисляются 20 чисел Фибоначчи, блок памяти располагается в стеке. Вот код:
class Test
{
    static unsafe void Main()
    {
        const int arraySize = 20;
        int* fib = stackalloc int[arraySize];
        int* p = fib;
        // The sequence begins with 1, 1.
        *p++ = *p++ = 1;
        for (int i = 2; i < arraySize; ++i, ++p)
        {
            // Sum the previous two numbers.
            *p = p[-1] + p[-2];
        }
        for (int i = 0; i < arraySize; ++i)
        {
            Console.WriteLine(fib[i]);
        }
 
        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
и тут посыпались непонятки... Зчаем тут создается указатель p? И что за "странная" операция

*p++ = *p++ = 1;

? это точно не арифметический инкремент... как это работает??? Если бы передо мной стала задача написать код для вычисления чисел Фибоначчи через указатели, расположив данные в стеке, я бы написал вот такой код:
          int* fib = stackalloc int[20];
          
           // The sequence begins with 1, 1.
           fib[0] = fib[1] = 1;
           for (int i = 2; i < 20; ++i)
           {
               // Sum the previous two numbers.
               fib[i] = fib[i-1] + fib[i-2];
           }
           for (int i = 0; i < 20; ++i)
           {
               Console.WriteLine(fib[i]);
           }

           System.Console.ReadKey();
отличается ли он в техничном плане?

Решение задачи: «Зачем тут создается указатель p? И что за "странная" операция *p = *p = 1?»

textual
Листинг программы
        int* fib = stackalloc int[arraySize];
        *(long*)fib = 4294967297;
        int* p = fib + 2;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы