指针值的差异
Difference of Pointer Values
我是一名新手程序员,我一直在参考各种建议,以便为 DSA 打下坚实的基础。以下是我的代码
int main() {
int AnArray[20];
int* plocation6, * plocation0;
plocation6 = &AnArray[6];
plocation0 = &AnArray[0];
cout << (int)plocation6 << endl << (int)plocation0<<endl;
cout << "Difference " << plocation6 - plocation0;
}
而且我预计 Difference 的值将是 24,因为在十六进制中指针位置相差 18,在十进制中相差 24 但答案是 6,就好像我使用 (int) 和然后进行操作然后我得到 24 作为答案,这是为什么?请解释为什么 6 来了??
两个指针之间的区别不在于字节,而在于元素的数量。所以你看到字节数 (24) 除以 sizeof(int)
(4).
please expalin why 6 comes??
索引 0 处的元素和索引 6 处的元素相隔 6 个索引。当您从一个指针中减去另一个指针时,这就是 6 的来源。
在以前的答案的基础上构建:
这是真的,因为一个 int
占用 4 个字节,所以两个指针相隔 24 个字节。
你得到 6 的原因是因为 -
运算符(对于指针)被定义为两个指针地址之间的差异除以指针指向的数据类型的大小。
这是一个类似于运算符重载的概念,运算符重载定义为执行不同于典型操作的操作。
注意:我不认为这在技术上是运算符重载,但理解运算符重载将有助于理解这个概念。
我是一名新手程序员,我一直在参考各种建议,以便为 DSA 打下坚实的基础。以下是我的代码
int main() {
int AnArray[20];
int* plocation6, * plocation0;
plocation6 = &AnArray[6];
plocation0 = &AnArray[0];
cout << (int)plocation6 << endl << (int)plocation0<<endl;
cout << "Difference " << plocation6 - plocation0;
}
而且我预计 Difference 的值将是 24,因为在十六进制中指针位置相差 18,在十进制中相差 24 但答案是 6,就好像我使用 (int) 和然后进行操作然后我得到 24 作为答案,这是为什么?请解释为什么 6 来了??
两个指针之间的区别不在于字节,而在于元素的数量。所以你看到字节数 (24) 除以 sizeof(int)
(4).
please expalin why 6 comes??
索引 0 处的元素和索引 6 处的元素相隔 6 个索引。当您从一个指针中减去另一个指针时,这就是 6 的来源。
在以前的答案的基础上构建:
这是真的,因为一个 int
占用 4 个字节,所以两个指针相隔 24 个字节。
你得到 6 的原因是因为 -
运算符(对于指针)被定义为两个指针地址之间的差异除以指针指向的数据类型的大小。
这是一个类似于运算符重载的概念,运算符重载定义为执行不同于典型操作的操作。
注意:我不认为这在技术上是运算符重载,但理解运算符重载将有助于理解这个概念。