我正在尝试执行以下操作,我将全局变量分配给局部变量:
#define DECK_SIZE = 52
...
int *numberOfDecks;
scanf("%d", &numberOfDecks);
int shoeSize = *numberOfDecks * DECK_SIZE;
自从我用C语言编写任何东西已经有一段时间了,但是对于我的记忆,这应该是可能的吗?
答案 0 :(得分:3)
您的主要问题是numberOfDecks
应该是int
,而不是int *
。如果它必须是int *
,您还需要在某处提供int
指向它。
固定代码:
#define DECK_SIZE 52
...
int numberOfDecks;
if (scanf("%d", &numberOfDecks) != 1)
...handle format error...
int shoeSize = numberOfDecks * DECK_SIZE;
或者:
#define DECK_SIZE 52
...
int actualNumberOfDecks;
int *numberOfDecks = &actualNumberOfDecks;
if (scanf("%d", numberOfDecks) != 1)
...handle format error...
int shoeSize = *numberOfDecks * DECK_SIZE;
但我认为第二个版本并不像第一个版本那样明智;这样做必须有令人信服的(但尚未说明的)原因。
答案 1 :(得分:3)
应该是
#define DECK_SIZE 52
你的int * numberOfDecks应该是
int numberOfDecks
答案 2 :(得分:2)
int *numberOfDecks;
scanf("%d", &numberOfDecks);
由于numberOfDecks已经是指针,因此您无需获取它的地址。只需将numberOfDecks
传递给scanf即可。 (或者使它不是指针并同样修改其余的代码。)
答案 3 :(得分:2)
您的define
错了,应该是
#define DECK_SIZE 52
你还有一个未初始化的指针,这可能被认为是一种不好的做法。
编辑:
您的scanf参数也存在问题,如其他答案中所述。
答案 4 :(得分:2)
错误:
=
numberofdecks
是未初始化的指针scanf
忽略可能的解决方法:
const int DECK_SIZE = 52;
...
int numberOfDecks;
if (scanf("%d", &numberOfDecks) == 1)
{
int shoeSize = numberOfDecks * DECK_SIZE;
}
答案 5 :(得分:2)
您的numberOfDecks
变量类型错误。您已将其设为指针,scanf
调用将向指针写入值,从而有效地更改其指向的位置。你只想要一个普通的整数。
DECK_SIZE宏的定义很好,除了一件事:宏是直接替换,语法不使用'=',所以'='实际上是宏的一部分。这意味着你要求编译器用“= 52”替换“DECK_SIZE”。你想要摆脱'='的标志:#define DECK_SIZE 52
希望有所帮助: - )