Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在计算中使用全局变量_C_Global Variables_Variable Assignment - Fatal编程技术网

C 在计算中使用全局变量

C 在计算中使用全局变量,c,global-variables,variable-assignment,C,Global Variables,Variable Assignment,我尝试执行以下操作,将全局变量分配给局部变量: #define DECK_SIZE = 52 ... int *numberOfDecks; scanf("%d", &numberOfDecks); int shoeSize = *numberOfDecks * DECK_SIZE; 我已经有一段时间没有用C编程了,但我记得这应该是可能的?您的主要问题是NumberOfDeck应该是一个int,而不是int*。如果它必须是int*,您还需要在某处提供一个int,以便它指向 固定代码:

我尝试执行以下操作,将全局变量分配给局部变量:

#define DECK_SIZE = 52
...
int *numberOfDecks;
scanf("%d", &numberOfDecks);
int shoeSize = *numberOfDecks * DECK_SIZE;

我已经有一段时间没有用C编程了,但我记得这应该是可能的?

您的主要问题是NumberOfDeck应该是一个int,而不是int*。如果它必须是int*,您还需要在某处提供一个int,以便它指向

固定代码:

#define DECK_SIZE 52
...
int numberOfDecks;
if (scanf("%d", &numberOfDecks) != 1)
    ...handle format error...
int shoeSize = numberOfDecks * DECK_SIZE;
或:


但我认为第二个版本不如第一个版本明智;这样做必须有一个令人信服但尚未阐明的理由。

您的主要问题是NumberOfDeck应该是一个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 numberOfDecks
#define DECK_SIZE 52
你的int*numberofdeck应该是

#define DECK_SIZE 52
int numberOfDecks
#define DECK_SIZE 52
应该是

#define DECK_SIZE 52
int numberOfDecks
#define DECK_SIZE 52
你的int*numberofdeck应该是

#define DECK_SIZE 52
int numberOfDecks
#define DECK_SIZE 52
因为numberOfDecks已经是一个指针,所以不需要获取它的地址。只需将numberOfDecks传递给scanf即可。或者将其设置为非指针,并同样修改代码的其余部分

因为numberOfDecks已经是一个指针,所以不需要获取它的地址。只需将numberOfDecks传递给scanf即可。或者将其设置为非指针,并同样修改代码的其余部分。

您的定义是错误的,应该是错误的

#define DECK_SIZE 52
int numberOfDecks
#define DECK_SIZE 52
您还有一个未初始化的指针,这可能被认为是一种不好的做法

编辑:

正如其他答案中所述,您对scanf的论证也有问题。

您的定义是错误的,应该是错误的

#define DECK_SIZE 52
int numberOfDecks
#define DECK_SIZE 52
您还有一个未初始化的指针,这可能被认为是一种不好的做法

编辑:

正如其他答案中所述,您对scanf的论证也存在问题。

错误:

宏包含= NumberOfDeck是未初始化的指针 忽略扫描结果 可能的解决方案:

const int DECK_SIZE = 52;
...
int numberOfDecks;
if (scanf("%d", &numberOfDecks) == 1)
{
    int shoeSize = numberOfDecks * DECK_SIZE;
}
错误:

宏包含= NumberOfDeck是未初始化的指针 忽略扫描结果 可能的解决方案:

const int DECK_SIZE = 52;
...
int numberOfDecks;
if (scanf("%d", &numberOfDecks) == 1)
{
    int shoeSize = numberOfDecks * DECK_SIZE;
}
numberOfDecks变量的类型错误。您已经将其设置为指针,scanf调用将向指针写入一个值,从而有效地更改指针指向的位置。你只需要一个普通的整数

DECK_SIZE宏的定义很好,除了一点:宏是直接替换的,语法没有使用“=”,因此“=”实际上是宏的一部分。这意味着您要求编译器将DECK_SIZE everywhere替换为=52。您需要去掉“=”符号:define DECK_SIZE 52

希望有帮助:-

您的numberOfDecks变量类型错误。您已经将其设置为指针,scanf调用将向指针写入一个值,从而有效地更改指针指向的位置。你只需要一个普通的整数

DECK_SIZE宏的定义很好,除了一点:宏是直接替换的,语法没有使用“=”,因此“=”实际上是宏的一部分。这意味着您要求编译器将DECK_SIZE everywhere替换为=52。您需要去掉“=”符号:define DECK_SIZE 52


希望有帮助:-

@kensing没问题。如果答案有帮助,不要忘记接受它-一直在尝试,但直到现在才获得15点声誉点:@kensing感谢您的投票:-但要接受答案,您只需单击单击投票位置下方的复选标记即可。@kensing没问题。如果答案有帮助,不要忘记接受它-一直在尝试,但直到现在才获得15点声誉积分:@kensing感谢您的upvote:-但要接受答案,您只需单击单击upvote位置下方的复选标记即可。