Объявление и определение переменной - PullRequest
3 голосов
/ 25 октября 2010
int x;

Является ли это декларацией или определением?

Когда я пишу следующий код,

#include <stdio.h>

int main(void)
{
    int x;
    printf("%p",&x);
    return 0;
}

печатает некоторый адрес.Так как память выделена, int x; не может быть просто объявлением.Так это определение?

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Из стандарта C (n1256) :

6,7 Декларации
...
5 Объявление определяет интерпретацию и атрибуты набора идентификаторов. определение идентификатора является объявлением для этого идентификатора, которое:

- для объекта вызывает сохранение хранилища для этого объекта;
- для функции включает тело функции; 101)
- для константы перечисления или имени typedef является (единственным) объявлением идентификатор.

В этом случае int x; является определением (или определяющим объявлением).

2 голосов
/ 25 октября 2010

int x; это определение. extern int x; это просто декларация. extern int x = 3; также является определением. НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...