指针:c ++需要所有声明的类型说明符

时间:2016-01-23 10:57:30

标签: 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() {

        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);


    }

它的

x = &a;
y = &b;   

显示为错误。

非常感谢任何帮助!

亲切的问候

4 个答案:

答案 0 :(得分:1)

这是因为这些是实际的表达式语句,必须进入函数内部。将违规行移至main将解决问题:

答案 1 :(得分:1)

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

int *x, *y;

x = &a;
y = &b;

不正确,但

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

是。

尽管我会这样写它以使其更具可读性(特别是如果你的目标是C ++):

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在C ++外部函数中,您只能放置声明statemens (在C中它们不是被调用语句而只是声明),如

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

您不能在类似

之类的函数之外编写表达式语句
x = &a;
y = &b;

没有必要将声明放在main之外,使它们成为全局声明。您可以将它们放在main中,使它们成为局部变量

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

    x = &a;
    y = &b;