Рубрики

Часто задаваемые вопросы по программированию на C | Набор 2

Этот пост является вторым набором часто задаваемых вопросов по программированию на C | Комплект 1

Каковы основные характеристики языка Си?
С является процедурным языком. Основные функции языка C включают низкоуровневый доступ к памяти, простой набор ключевых слов и чистый стиль. Эти функции делают его пригодным для системного программирования, такого как разработка операционной системы или компилятора.

В чем разница между i ++ и ++ i?
1) Выражение «i ++» возвращает старое значение и затем увеличивает i. Выражение ++ i увеличивает значение и возвращает новое значение.
2) Приоритет postfix ++ выше, чем у префикса ++.
3) Ассоциативность postfix ++ слева направо, а ассоциативность prefix ++ справа налево.
4) В C ++, ++ я могу использоваться как l-значение, но i ++ не может быть. В C они оба не могут использоваться как l-значение.
Посмотрите Различие между ++ * p, * p ++ и * ++ p для получения дополнительной информации.

Что такое l-значение?
Значение l или значение местоположения относится к выражению, которое можно использовать в левой части оператора присваивания. Например, в выражении «a = 3» a является l-значением, а 3 является r-значением.
l-значения бывают двух типов:
«Немодифицируемое l-значение» представляет собой l-значение, которое нельзя изменить. Переменные const являются «немодифицируемым l-значением».
«Модифицируемое l-значение» представляет собой l-значение, которое можно изменить.

За подробностями обращайтесь к lvalue и rvalue на языке Си .

В чем разница между массивом и указателем?
См. Массив против указателя

Как написать свой собственный оператор sizeof?

#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)

См. Реализация собственного sizeof для более подробной информации.

Как вы будете печатать числа от 1 до 100 без использования петли?
Мы можем использовать рекурсию для этой цели.

/ * Печатает числа от 1 до n * /

void printNos(unsigned int n)

{

  if(n > 0)

  {

    printNos(n-1);

    printf("%d ",  n);

  

}

Что такое изменчивое ключевое слово?
Ключевое слово volatile предназначено для предотвращения применения компилятором каких-либо оптимизаций к объектам, которые могут изменяться способами, которые не могут быть определены компилятором.
Объекты, объявленные как volatile, не включаются в оптимизацию, поскольку их значения могут быть изменены кодом вне области текущего кода в любое время. См. Понимание квалификатора «volatile» в C для более подробной информации.

Может ли переменная быть как const, так и volatile?
да, const означает, что переменной нельзя присвоить новое значение. Значение может быть изменено другим кодом или указателем. Например, следующая программа работает нормально.

int main(void)

{

    const volatile int local = 10;

    int *ptr = (int*) &local; 

    printf("Initial value of local : %d \n", local); 

    *ptr = 100; 

    printf("Modified value of local: %d \n", local); 

    return 0;

}

Скоро мы опубликуем больше наборов часто задаваемых вопросов по программированию на Си.

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

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

Часто задаваемые вопросы по программированию на C | Набор 2

0.00 (0%) 0 votes