【问题标题】: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 ... 时。您多次所做的就是为变量赋值。

标签: c variables declaration definition


【解决方案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

【讨论】:

    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 2020-03-20
    • 2018-01-20
    • 1970-01-01
    • 2016-03-19
    • 2015-04-09
    • 2016-06-18
    • 2018-02-04
    相关资源
    最近更新 更多