二进制“ operator +”类型为“ int *”和“ int *”的无效操作数

尼罗山

我正在尝试一些基本的C ++示例。我无法理解上述编译错误的原因。这是我正在尝试的示例。

void update(int *a,int *b) {   
    int c = a+b; // Error occurs here
    int d = a-b; // But not here
    int e = a*b; // Error
    int f = a/b; // Error
}

int main(){
    int a = 4, b = 8;
    update(&a, &b);
}

我知道上述a-b情况使两个内存地址之间的差为的大小的倍数int,因此d为-1(更新:假定ab是内存中的连续变量)。

有人可以解释一下其他三种情况下发生的情况以及错误的含义。

理查德·钱伯斯

有效指针包含内存中某个位置的地址。指针变量的概念已内置在语言中,这意味着默认情况下允许的运算符也已内置在该语言中。

减号或减号两个指针的运算符在编程中有许多有用的应用,因为它为您提供了两个存储位置之间的差值或偏移值。

相等性的逻辑运算符(或多或少)在编程中也有许多有用的应用程序。

问题是其他运算符(例如加,乘和除运算符)可能具有什么效用。

向指针添加或减去偏移量的想法很有意义,因为它是一种能够在一系列内存位置上进行迭代的方式。

两个指针相加应该做什么?添加两个指针的作用是什么?结果应该是什么?

如果我们认为内存是一条线,而指针是一个变量,则该变量包含沿线的位置,那么也许我们可以对数学上的概念进行理解,即哪些指针运算符有意义,哪些有用,而哪些运算符没有意义。

我们使用指针变量数学所做的是一种翻译形式。当我们向指针添加或减去偏移量时,我们会将位置从行上的一个位置转换为另一个位置。

当我们减去指针时,我们得到一个偏移量,该偏移量指示我们需要从两个指针中的任意一个相加或减去的值,才能将一个指针转换为另一个指针的位置。

逻辑运算符告诉我们两个指针之间的关系,无论它们是在线上的同一位置还是一个指针大于或小于另一个指针。

添加两个指针如何帮助我们平移指针或确定直线上两个点之间的关系?如果一个指针变量包含一个向量,一个带方向的点,那么添加两个指针将是有意义的,因为它将添加两个向量。但是,指针是不包含向量的变量,指针没有方向。指针包含一个值,该值是沿一维线的位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

'int' 和 'const char [15]' 类型的无效操作数到二进制 'operator<<' ^

来自分类Dev

错误:类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

来自分类Dev

类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

来自分类Dev

为什么我会收到此错误?错误:二进制“ operator /”类型为“ int”和“ int(int,int)”的无效操作数

来自分类Dev

二进制运算符的类型为'int'和'double(double *,double *,int)'的无效操作数

来自分类Dev

错误:二进制运算符'/'的类型为'int'和'float *'的无效操作数

来自分类Dev

将无效操作数错误为二进制&(具有'int **'和'int *')

来自分类Dev

错误:类型为“ double *”和“ double”的无效操作数为二进制“ operator /”

来自分类Dev

类型'std :: istream *'和'char'的无效操作数为二进制'operator >>'

来自分类Dev

对二进制*无效的操作数(具有'int'和'int *')

来自分类Dev

尝试编写备份程序 (C++) 时将类型为“int(const char*)”和“const char [11]”的无效操作数转换为二进制“operator<<”

来自分类Dev

无效的二进制表达式操作数(Int和NSNumber *)

来自分类Dev

二进制运算符“ .. <”不能应用于类型为“ Int”和“ CGFloat”的操作数

来自分类Dev

二进制“ operator <<”类型为“ double”和“ const char [5]”类型的无效操作数

来自分类Dev

C ++错误:类型为'double'和<unresolved重载的函数类型'的操作数对二进制'operator'无效

来自分类Dev

二进制“ operator!=”类型为“ double”和“ const char [13]”类型的无效操作数

来自分类Dev

错误:类型为'const char [35]'和'const char [2]'的无效操作数为二进制'operator +'

来自分类Dev

将类型为'char *'和'const char [2]'的c ++无效操作数转换为二进制'operator +'

来自分类Dev

二进制'operator +'类型为'const char *'和'const char [2]'的无效操作数

来自分类Dev

二进制'operator +'类型为'const char [8]'和'const char *'的无效操作数

来自分类Dev

错误:类型为“const char [8]”和“const char [7]”的无效操作数到二进制“operator<<”

来自分类Dev

比较数组中的整数:(无效的操作数为二进制表达式(“ NSUInteger *”(又名“ unsigned int *”)和“ NSUInteger *”)

来自分类Dev

二进制表达式的无效操作数(“ int_node”和const“ int_node”)

来自分类Dev

二进制运算符'-='不能应用于类型'CGFloat'和'Int'的操作数

来自分类Dev

错误是什么:对二进制%(具有'float'和'int')的无效操作数意味着

来自分类Dev

arduino,错误:“char [14]”和“char [5]”类型的无效操作数到二进制“operator+”

来自分类Dev

二进制运算符“ |” 不能应用于类型为'Int'和'UInt8'的操作数

来自分类Dev

二进制运算符'|' 不能应用于类型为'Int'和'UInt8'的操作数

来自分类Dev

'operator + ='不匹配(操作数类型为'std :: basic_ostream <char>'和'int')

Related 相关文章

  1. 1

    'int' 和 'const char [15]' 类型的无效操作数到二进制 'operator<<' ^

  2. 2

    错误:类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

  3. 3

    类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

  4. 4

    为什么我会收到此错误?错误:二进制“ operator /”类型为“ int”和“ int(int,int)”的无效操作数

  5. 5

    二进制运算符的类型为'int'和'double(double *,double *,int)'的无效操作数

  6. 6

    错误:二进制运算符'/'的类型为'int'和'float *'的无效操作数

  7. 7

    将无效操作数错误为二进制&(具有'int **'和'int *')

  8. 8

    错误:类型为“ double *”和“ double”的无效操作数为二进制“ operator /”

  9. 9

    类型'std :: istream *'和'char'的无效操作数为二进制'operator >>'

  10. 10

    对二进制*无效的操作数(具有'int'和'int *')

  11. 11

    尝试编写备份程序 (C++) 时将类型为“int(const char*)”和“const char [11]”的无效操作数转换为二进制“operator<<”

  12. 12

    无效的二进制表达式操作数(Int和NSNumber *)

  13. 13

    二进制运算符“ .. <”不能应用于类型为“ Int”和“ CGFloat”的操作数

  14. 14

    二进制“ operator <<”类型为“ double”和“ const char [5]”类型的无效操作数

  15. 15

    C ++错误:类型为'double'和<unresolved重载的函数类型'的操作数对二进制'operator'无效

  16. 16

    二进制“ operator!=”类型为“ double”和“ const char [13]”类型的无效操作数

  17. 17

    错误:类型为'const char [35]'和'const char [2]'的无效操作数为二进制'operator +'

  18. 18

    将类型为'char *'和'const char [2]'的c ++无效操作数转换为二进制'operator +'

  19. 19

    二进制'operator +'类型为'const char *'和'const char [2]'的无效操作数

  20. 20

    二进制'operator +'类型为'const char [8]'和'const char *'的无效操作数

  21. 21

    错误:类型为“const char [8]”和“const char [7]”的无效操作数到二进制“operator<<”

  22. 22

    比较数组中的整数:(无效的操作数为二进制表达式(“ NSUInteger *”(又名“ unsigned int *”)和“ NSUInteger *”)

  23. 23

    二进制表达式的无效操作数(“ int_node”和const“ int_node”)

  24. 24

    二进制运算符'-='不能应用于类型'CGFloat'和'Int'的操作数

  25. 25

    错误是什么:对二进制%(具有'float'和'int')的无效操作数意味着

  26. 26

    arduino,错误:“char [14]”和“char [5]”类型的无效操作数到二进制“operator+”

  27. 27

    二进制运算符“ |” 不能应用于类型为'Int'和'UInt8'的操作数

  28. 28

    二进制运算符'|' 不能应用于类型为'Int'和'UInt8'的操作数

  29. 29

    'operator + ='不匹配(操作数类型为'std :: basic_ostream <char>'和'int')

热门标签

归档