变量/函数可以声明多次,但只能定义一次。 这实际上是什么意思?
我试图了解在线编译器上的该语句,并且希望显示错误,但事实并非如此。
#include <stdio.h>
int x=10;
int main() {
x=20;
x=30;
printf("%d",x);
}
预期的输出:我希望显示错误,因为我已经定义了变量x并分配了三个不同的值10、20、30。这个概念说,您可以声明变量多次,但是只能定义一次,因为不能将两个不同的位置赋给同一变量 实际输出:30
答案 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