Блог пользователя mkagenius

Автор mkagenius, 13 лет назад, По-английски

Code:

#include
int main()
{
    char *s[]={"codeforces","russia","contest"};
    char **p;
    p = s;
    printf("%s ",++*p);
    printf("%s ",*p++);
    printf("%s ",++*p);
    scanf("%*d");
    return 0;
}
Output: odeforces odeforces ussia

Please someone explain the output( 2nd and 3rd string).
  • Проголосовать: нравится
  • +9
  • Проголосовать: не нравится

13 лет назад, # |
Rev. 2   Проголосовать: нравится -6 Проголосовать: не нравится

Неверно выбран язык комментария
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Прочитал сначала "неверно выбрал язык программирования" и мысленно порадовался.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
p={"odeforces","russia","contest"}
2: *(p++)
p={"russia","contest"}
3: ++(*p)
p={"ussia","contest"
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    2nd output still not clear, *(p++) , p gets incremented first ,
    so, p =  { "russia", "contest"}
    now how using * will print "odeforces" ;
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      This is postincrement operator. It returns p and then increments it. It return {"odeforces","russia","contest"} and then transform into {"russia", "contest"}.