变量/函数可以声明任意次数,但只能定义一次[重复]
Posted
技术标签:
【中文标题】变量/函数可以声明任意次数,但只能定义一次[重复]【英文标题】:a variable/function can be declared any number of times but it can be defined only once [duplicate] 【发布时间】:2019-10-21 03:27:57 【问题描述】:一个变量/函数可以声明任意次数,但只能定义一次。 这究竟是什么意思??
我试图理解在线编译器上的那个声明,我期待显示错误,但它没有。
#include <stdio.h>
int x=10;
int main()
x=20;
x=30;
printf("%d",x);
预期输出:我预计会显示错误,因为我定义了变量 x 并分配了三个不同的值 10、20、30。这个概念说您可以多次声明变量,但只能定义一次,因为不能将两个不同的位置赋予同一个变量 实际输出:30
【问题讨论】:
如果你只能给它们赋值一次,变量将几乎没有用处 @ChrisTurner 有许多编程语言的操作方式与此完全相同,而且非常有用。 它们被称为变量也是有原因的...... @RATAN 变量仅声明一次,当您执行int x ...
时。您多次所做的就是为变量赋值。
【参考方案1】:
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;
【讨论】:
不错的答案。我做错了一些事情,当我看到您的答案时,我没有看到纠正答案的意义。赞成。 @Broman:真可惜:当有多个答案时,Stack Overflow 效果最好。 @Bathsheba 这个答案涵盖了我想说的一切。如果您的答案没有提供任何新内容,那么添加答案是没有意义的。 x = 10;不是一个定义。这是一个赋值。x = 10
部分是一个初始化,这与赋值不同。
@AndrewHenle 我说的是独立语句,而不是作为语句int x = 10;
一部分的片段x = 10
。【参考方案2】:
我只是想补充一点,如果您将变量定义为常量,会出错,即
const int x = 10;
x = 15; // This will throw a compile-time error
由于常量在定义期间只能分配一次,因此命名为常量。
https://www.programiz.com/c-programming/c-variables-constants
【讨论】:
以上是关于变量/函数可以声明任意次数,但只能定义一次[重复]的主要内容,如果未能解决你的问题,请参考以下文章