我正在尝试一些基本的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(更新:假定a
和b
是内存中的连续变量)。
有人可以解释一下其他三种情况下发生的情况以及错误的含义。
有效指针包含内存中某个位置的地址。指针变量的概念已内置在语言中,这意味着默认情况下允许的运算符也已内置在该语言中。
减号或减号两个指针的运算符在编程中有许多有用的应用,因为它为您提供了两个存储位置之间的差值或偏移值。
相等性的逻辑运算符(或多或少)在编程中也有许多有用的应用程序。
问题是其他运算符(例如加,乘和除运算符)可能具有什么效用。
向指针添加或减去偏移量的想法很有意义,因为它是一种能够在一系列内存位置上进行迭代的方式。
两个指针相加应该做什么?添加两个指针的作用是什么?结果应该是什么?
如果我们认为内存是一条线,而指针是一个变量,则该变量包含沿线的位置,那么也许我们可以对数学上的概念进行理解,即哪些指针运算符有意义,哪些有用,而哪些运算符没有意义。
我们使用指针变量数学所做的是一种翻译形式。当我们向指针添加或减去偏移量时,我们会将位置从行上的一个位置转换为另一个位置。
当我们减去指针时,我们得到一个偏移量,该偏移量指示我们需要从两个指针中的任意一个相加或减去的值,才能将一个指针转换为另一个指针的位置。
逻辑运算符告诉我们两个指针之间的关系,无论它们是在线上的同一位置还是一个指针大于或小于另一个指针。
添加两个指针如何帮助我们平移指针或确定直线上两个点之间的关系?如果一个指针变量包含一个向量,一个带方向的点,那么添加两个指针将是有意义的,因为它将添加两个向量。但是,指针是不包含向量的变量,指针没有方向。指针包含一个值,该值是沿一维线的位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句