在声明期间初始化参考

时间:2011-09-12 14:51:16

标签: c++ c

为什么在初始化期间需要初始化引用。如果没有初始化,则会抛出错误。是const数据应始终使用值初始化。为什么它只用于常量,并且不需要在声明期间初始化变量。

编辑:

#include<stdio.h>

int main()
{
    int a=10,b=12;
    int &c=a;
    printf("%d\n",a);
    c=b;
    printf("%d\n",a);
    printf("%d\n",c);
    return 0;
}

这是我使用引用的c程序。我错了吗?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

就是这样。有一些指针不必初始化,可以稍后分配给。引用可以被认为是对象的同义词 - 你不能没有任何同义词。

通常,您必须初始化以后无法分配的任何内容 - 例如常量和引用。如果你被允许 来初始化它们,那么你应该被允许稍后为它们分配一个新值,这将破坏整个目的

答案 2 :(得分:1)

您发布的代码无法编译为C程序,因为C中没有引用。

要使其编译为C,您必须对其进行修改:

#include<stdio.h>

int main()
{
    int a=10,b=12;
    int *c=&a;
    printf("%d\n",a);
    *c=b;
    printf("%d\n",a);
    printf("%d\n",*c);
    return 0;
}

对于C ++引用,需要初始化引用的事实是指针和引用之间的主要区别之一。

指针可以是NULL或无效,引用不能(实际上,您可以生成无效引用,但编译器应该警告您)。在某种程度上,引用作为别名。通过编写int a; int &b=a;,您现在有一个变量(或内存位置)的两个名称。