我目前正在学习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;
显示为错误。
非常感谢任何帮助!
亲切的问候
答案 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;