变量/函数可以声明多次,但只能定义一次

时间:2019-06-05 15:26:08

标签: c variables declaration definition

变量/函数可以声明多次,但只能定义一次。 这实际上是什么意思?

我试图了解在线编译器上的该语句,并且希望显示错误,但事实并非如此。

#include <stdio.h>
int x=10;

int main() {
    x=20;
    x=30;

    printf("%d",x);
}

预期的输出:我希望显示错误,因为我已经定义了变量x并分配了三个不同的值10、20、30。这个概念说,您可以声明变量多次,但是只能定义一次,因为不能将两个不同的位置赋给同一变量 实际输出:30

2 个答案:

答案 0 :(得分:6)

x = 10;不是定义。这是任务。您可以分配任意多次。

int x;定义(同时也是声明)。同样,extern int x;声明(无定义)。为了说明您所询问的概念,以下是有效的C:

// Duplicate declaration: OK
extern int x;
extern int x;

// Definition: OK
int x;
// int x; // Duplicate definition: ERROR

// Definition with initialisation: OK
int y = 42;

// (Re)assignment: OK inside function.
x = 1;
y = 2;

对于函数,语法不同。要声明一个函数,请编写其原型。要定义它,请添加一个函数主体:

// Declaration:
int f(void);
// Also possible, but unnecessary:
extern int f(void);

// Definition:
int f(void) { return 42; }

答案 1 :(得分:-1)

我只是想补充一点,如果您将变量定义为常量,即

会。

const int x = 10;

x = 15; // This will throw a compile-time error

由于常量在定义期间只能分配一次,因此名称为常量。

https://www.programiz.com/c-programming/c-variables-constants