【发布时间】:2020-04-27 19:44:10
【问题描述】:
这个问题确实看起来很愚蠢,但我总是浪费很多时间,测试/错误,直到它工作,这种问题。
我需要一个指针来从函数中返回一个值,然后我需要将该值相除,但是我有编译器错误:
invalid operands to binary / (have 'int *' and 'int')
以下代码中的示例:
void test(int *x, int y)
{
*x = *x+y;
}
int main()
{
int *x = 20;
int y = 1;
test(&x, y);
printf("x: %i", x);
float res = x / 2; // error: invalid operands to binary / (have 'int *' and 'int')
//float res = *x / 2; // application crash with this one. (GCC native Android)
}
我尝试使用 '&' 但它不起作用(x = 0),我尝试强制转换为 int 并且只获取指针地址等。
【问题讨论】:
-
谢谢 Mat,我编辑了这个问题。如果只是交叉编译崩溃,也许我应该更改标题?
-
int *x = 20使x成为指向地址 20 的指针,在那里存储int可能是不合法的。你希望通过它实现什么?指针需要指向某个地方。这在每个平台上都是无效的代码,尽管它在某些平台上可能会靠运气。 -
只是为了能够从更大的函数中返回值。
-
与
int *x你有x是一个指针... 与int *x = 20;你希望那个指针是20!??!20??地址 20 是什么,假设您的计算机不喜欢让指针具有该值? -
指针分割是什么意思?这就像问鱼的平方是什么,或者是所有恐惧总和的一半。