суббота, 16 января 2010 г.

Загадка на собеседовании для программиста

Решил написать небольшую программку-задачку для программиста на C.
Кто сможет объяснить в результате чего программа делает столь странный вывод - молодец!


Исходный код:
Copy Source | Copy HTML
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     char A[3];
  6.     char B[100];
  7.     char C[100];
  8.  
  9.     strcpy(A, "AAA");
  10.     strcpy(B, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
  11.     strcpy(C, "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC");
  12.  
  13.     printf("A = %s\n", A);
  14.     printf("B = %s\n", B);
  15.     printf("C = %s\n", C);
  16. }
  17.  


Компилируем:
$ gcc ./test.c -o test


Результат работы программы:

$ ./test
A = AAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
B = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
C = CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC




Свои изыскания отписываем в комментариях.

2 комментария:

  1. эээ... как бы нуль переписывается в массиве А.

    ОтветитьУдалить
  2. ну и к счастью компилятор расположил оба массива последовательно в памяти

    ОтветитьУдалить