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

15 浏览
0 Comments

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

这个问题已经在这里有答案:

定义和声明的区别是什么?

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

我尝试在在线编译器上理解这个语句,我期望会出错,但它没有。

#include 
int x=10;
int main() {
    x=20;
    x=30;
    printf("%d",x);
}

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

实际输出:30

admin 更改状态以发布 2023年5月24日
0
0 Comments

我只想补充一点,如果你把变量定义为常量,即会收到错误提示,即:

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

因为常量在定义时只能赋值一次,因此被称为常量。

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

0
0 Comments

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; }

0