C++ 指针:c++;所有声明都需要类型说明符
我目前正在学习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() {
#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;
将这些语句移到
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;