指针:C++需要的所有声明

问题描述:

目前我正在学习C语言编程类型说明,我已经在我做的一个练习遇到了问题。指针: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; 

是显示为错误。

任何帮助将不胜感激!

亲切的问候

+1

将这些语句移到'main()'函数中。 –

+5

这似乎是C和C++的一个可怕的混合物(主要是C,但编译为C++) - 这是语言你真正希望去学习?尽管出现,他们是非常不同的语言。我建议你选一个并坚持下去。 –

+0

@EinarKnudsen你会考虑接受的答案吗? –

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

+0

解决了这个问题,谢谢你的回答! –

+0

欢迎您! –

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

+0

移动主工作内部的行。谢谢你的回答! –

你不能在函数外声明。但是你可以你的声明初始化。

int *x, *y; 

x = &a; 
y = &b; 

是不正确的,但

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

是。

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

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

在C++以外的功能,你可以将只声明statemens(在C他们是不叫声明,但只是声明)像

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

您不得例如表达式语句编写一个函数外像

x = &a; 
y = &b; 

没有任何需要将主要的声明放在全局之外。你可以把它们放在main里面,使它们成为局部变量

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

    x = &a; 
    y = &b;