Рубрики

Инициализация глобальных и статических переменных в C

Прогнозировать выход следующих программ на Си.

// ПРОГРАММА 1
#include <stdio.h>
#include <stdlib.h>

  

int main(void)

{

   static int *p = (int*)malloc(sizeof(p));

   *p = 10;

   printf("%d", *p);

}

// ПРОГРАММА 2
#include <stdio.h>
#include <stdlib.h>

int *p = (int*)malloc(sizeof(p));

  

int main(void)

{

    *p = 10;

    printf("%d", *p);

}

Обе вышеперечисленные программы не компилируются в C. Мы получаем следующую ошибку компилятора в C.

error: initializer element is not constant

В C статические и глобальные переменные инициализируются самим компилятором. Поэтому они должны быть инициализированы с постоянным значением.

Обратите внимание, что вышеперечисленные программы компилируются и отлично работают на C ++ и выдают результат как 10.

В качестве упражнения предскажите вывод следующей программы как на C, так и на C ++.

#include <stdio.h>

int fun(int x)

{

    return (x+5);

}

  

int y = fun(20);

  

int main()

{

    printf("%d ", y);

}

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

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

Инициализация глобальных и статических переменных в C

0.00 (0%) 0 votes