C++ 指针:c++;所有声明都需要类型说明符

C++ 指针:c++;所有声明都需要类型说明符,c++,c,pointers,types,C++,C,Pointers,Types,我目前正在学习c编程,我在做的一个练习中遇到了一个问题 在尝试解码指针的工作方式时,我收到以下错误: c++要求所有声明都使用类型说明符 我的节目: #include <iostream> #include <stdio.h> int a = 1, b = 2; double c = 3.1415; int *x, *y; x = &a; y = &b; int main() {

我目前正在学习c编程,我在做的一个练习中遇到了一个问题

在尝试解码指针的工作方式时,我收到以下错误:

c++要求所有声明都使用类型说明符

我的节目:

    #include <iostream>
    #include <stdio.h>

    int a = 1, b = 2;
    double c = 3.1415;
    int *x, *y;

    x = &a;
    y = &b;


    int main() {

        printf("&a = %p\n", &a);
        printf("&b = %d\n", &b);
        printf("&c = %f\n", &c);
        printf("&x = %p\n", &x);
        printf("&y = % \n", &y);
        printf("x = %p\n", x);
        printf("y = %p\n", y);
        printf("a = %e\n", a);
        printf("b = %d\n", b);

        printf("*y = %d\n", *y);
        printf("c = %8.4f\n", c);
        printf("c = %4.2e\n", c);


    }
这显示为错误

任何帮助都将不胜感激


这是因为这些是实际的表达式语句,必须放在函数内部。将有问题的行移动到
main
将解决问题:

语句不能存在于全局范围内,因此必须移动到
main
函数内。但是,声明允许存在于全局范围中,这就是为什么上面的几行不会产生错误。

函数之外不能有语句。但是您可以对声明进行初始化

int *x, *y;

x = &a;
y = &b;
不正确,但是

int *x = &a, *y = &b;

尽管我这样写是为了让它更具可读性(特别是如果你的目标是C++):


在C++外部函数中,你可以只放置<强>声明状态> <强>(在C中它们不被称为语句,而只是声明),类似

例如,您不能在函数之外编写表达式语句,如

x = &a;
y = &b;
没有任何必要将这些声明放在main之外,使它们成为全球性的。您可以将它们放在main中,使它们成为局部变量

int main() {
    int a = 1, b = 2;
    double c = 3.1415;
    int *x, *y;

    x = &a;
    y = &b;

将这些语句移到主()/<代码>函数中。这似乎是C和C++的混合体(主要是C,但编译为C++)-你实际上希望学习哪种语言?尽管表面上它们是非常不同的语言。我建议你选一个并坚持下去。@ EinarKnudsen,你会考虑接受这个答案吗?我不知道为什么这样的问题会被否决。这肯定会混淆初学C/C++程序员。@ EinarKnudsen没有“C有一点C++”。C++和C++是两种不同的语言。如果你正在编译C++编译器,你正在编写C++,而不是C。在主管道内移动管道是有效的。谢谢你的回答!
int a = 1, b = 2;
double c = 3.1415;
int *x, *y;
x = &a;
y = &b;
int main() {
    int a = 1, b = 2;
    double c = 3.1415;
    int *x, *y;

    x = &a;
    y = &b;