2015-04-27 4 views
-1

Во время набора, я был дан тест с несколькими вопросами (множественный выбор), это один из них:Результат доступа к элементу за массива

Что произойдет, когда вы будете пытаться скомпилировать и запустить программу содержащий этот фрагмент кода?

char str[] = "abc"; 
char c = str[3]; 
  • а) результаты программ могут быть неожиданными

  • б) программа не будет компилировать

  • с) программа может возникнуть ошибка во время выполнения

  • d) переменная c сохранит неизвестное значение

  • е) переменная c будет хранить '\0'

+5

@Cyber: Да, что? Строка «abc» имеет элементы '{'a', 'b', 'c', '\ 0'}'. Элемент '[3]' корректно определен как '\ 0'. – abelenky

+0

Это был тест с множественным выбором. – user3365101

+1

@abelenky Вы правы, у меня был мозговой штурм. Длина 'str' действительно равна 4, поэтому' [3] 'является допустимым индексом. – CoryKramer

ответ

3

Ответ

E: переменная с будет хранить '\ 0'

Рассуждение:

char str[] = "abc"; 

полностью эквивален щ:

char str[] = {'a', 'b', 'c', '\0'}; 

, потому что компилятор помещает в \0 при объявлении строки.

Этот массив имеет 4 элемента, пронумерованный [0] до [3].
Элемент [3] этого массива имеет значение \0.

+1

Был комментарий, предполагающий, что он будет делать UD, и этот парень был настолько уверен, что я сомневался в своих навыках программирования ... Спасибо, что ответил на этот очевидный вопрос. – newfolder

Смежные вопросы