Рубрики

В чем разница между одинарными и двойными кавычками в объявлении массива char?

В C / C ++, когда массив символов инициализируется строкой в двойных кавычках и размер массива не указан, компилятор автоматически выделяет один дополнительный пробел для ограничителя строки '/ 0'. Например, следующая программа печатает 6 как вывод.

#include<stdio.h>

int main()

{

  // размер arr [] равен 6, так как он равен '/ 0'

  char arr[] = "geeks";

  

  printf("%lu", sizeof(arr));

  

  return 0;

}

Выход :

6

Если размер массива указан как 5 в вышеуказанной программе, то программа работает без предупреждения / ошибки и печатает 5 в C, но вызывает ошибку компиляции в C ++.

// Работает в C, но ошибка компиляции в C ++
#include<stdio.h>

int main()

{

  // arr [] не заканчивается '/ 0'

  // и его размер 5

  char arr[5] = "geeks"

    

  printf("%lu", sizeof(arr));

    

  return 0;

}

Выход :

5

Когда символьный массив инициализируется разделенным запятыми списком символов и размер массива не указан, компилятор не создает дополнительного пространства для ограничителя строки '/ 0'. Например, следующая программа печатает 5.

#include<stdio.h>

int main()

{

  // arr [] не заканчивается '/ 0'

  // и его размер 5

  char arr[]= {'g', 'e', 'e', 'k', 's'}; 

  

  printf("%lu", sizeof(arr));

  

  return 0;

}

Выход :

5

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

В чем разница между одинарными и двойными кавычками в объявлении массива char?

0.00 (0%) 0 votes