变量/函数可以声明任意次数,但只能定义一次[重复]

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

【讨论】:

以上是关于变量/函数可以声明任意次数,但只能定义一次[重复]的主要内容,如果未能解决你的问题,请参考以下文章

js的构造函数

函数的声明和定义的区别

c语言中,声明和定义有啥区别

总结--------函数

网站前端_JavaScript.0007.JavaScript函数相关

声明与定义的区别