一个变量/函数可以被声明多次,但只能定义一次。
一个变量/函数可以被声明多次,但只能定义一次。
这个问题已经在这里有答案:
一个变量/函数可以被声明任意多次,但只能被定义一次。这实际上是什么意思?
我尝试在在线编译器上理解这个语句,我期望会出错,但它没有。
#include int x=10; int main() { x=20; x=30; printf("%d",x); }
期望输出:我希望会显示错误,因为我已经定义了变量 x 并且分配了三个不同的值 10、20、30。概念说你可以声明任意多次变量,但只能定义一次,因为不能给同一个变量赋不同的位置。
实际输出:30
admin 更改状态以发布 2023年5月24日
我只想补充一点,如果你把变量定义为常量,即会收到错误提示,即:
const int x = 10; x = 15; // This will throw a compile-time error
因为常量在定义时只能赋值一次,因此被称为常量。
https://www.programiz.com/c-programming/c-variables-constants
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; }