Язык программирования Си Урок 12 Строки символьные массивы

Поделиться
HTML-код
  • Опубликовано: 29 янв 2025

Комментарии • 3

  • @bishop_ru6767
    @bishop_ru6767 4 года назад +1

    Благодарю за видос!

  • @lighthouse5163
    @lighthouse5163 7 лет назад

    Мне в место симловов строки виводит алфавит. Тоесть пишу например
    main()
    {
    char text[] = "Better to live running, than to die rotting";
    char *wd = text;
    printf("%c", *wd+2);
    }
    выдает не 't' , а 'D' если написать wd+3 выдаст 'E' ;

    • @slechtvalk_7986
      @slechtvalk_7986  7 лет назад +2

      Ну все верно выдает.
      *wd указывает на первый символ массива text[] ( 'B' ).
      *wd + 2 означает, "код символа, на 2 больший кода символа, на который указывает wd".
      Со спецификатором типа %c ( символ ) тебе и выводится символ, отстоящий на 2 от символа 'B'.
      А вот если написать *(wd+2), то выведется символ, позиция которого отстоит от позиции первого символы 'B' на 2, так как wd (без звездочки) - это номер ячейки памяти, а text[] - это статический массив, а это значит что его элементы расположены в памяти друг за другом, а не вразброс, что и позволяет получать разные символы строки, просто прибавляя разные числа к номеру ячейки памяти, хранящей первый элемент массива text[].
      Итого:
      1. wd - номер (адрес вообще-то) ячейки памяти, хранящей первый элемент массива text;
      2. *wd - код первого символа массива text[].
      3. Сначала выполняется операция в скобках, а затем операция разыменования *, то есть дело в скобках.