【发布时间】:2015-06-11 21:19:08
【问题描述】:
我有名的
“赋值使指针变成整数而不需要强制转换”
问题。我知道这意味着什么,但我找不到解决它的方法。 以下指令导致了问题
champ->instruction.instruction[i + 1] =
(champ->pc + (champ->instruction.instruction[i + 1] % IDX_MOD));
champ->instruction.instruction 是一个int *。
champ->pc 是一个 unsigned char *,它计算数组的地址。
IDX_MOD 是类似#define IDX_MOD 36 的定义。
我可以通过声明一个变量来解决这个问题:unsigned char *tmp;
但是我不能把这个变量放在我的champ->instruction.instruction中。
任何人都可以有一个想法吗?
【问题讨论】:
-
请编辑您的问题以显示更多声明(例如
*champ、champ->instruction等类型) -
您是否尝试访问
champ->pc的第p 个元素?那么champ->pc[champ->instruction.instruction[i + 1] % IDX_MOD]不会工作吗? -
解释更多关于你想要做什么的信息。很明显,您将
unsigned char *分配给int,这是一个错误,您似乎明白这一点,但在不知道您的目标是什么的情况下,很难提出行动方案。您能否提供更多背景信息或举例说明您期望的结果类型?
标签: c pointers int addition assignment-operator