指针: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;
是显示为错误。
任何帮助将不胜感激!
亲切的问候
这是因为这些都是真实的表达语句,必须在函数内部。将违规行移入main
将解决问题:
解决了这个问题,谢谢你的回答! –
欢迎您! –
语句不能在全局范围内存在,因此必须在main
函数内移动。声明允许在全局范围内存在,但是,这就是为什么上面的行不会产生错误。
移动主工作内部的行。谢谢你的回答! –
你不能在函数外声明。但是你可以有你的声明初始化。
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;
将这些语句移到'main()'函数中。 –
这似乎是C和C++的一个可怕的混合物(主要是C,但编译为C++) - 这是语言你真正希望去学习?尽管出现,他们是非常不同的语言。我建议你选一个并坚持下去。 –
@EinarKnudsen你会考虑接受的答案吗? –