gpt4 book ai didi

c++ - 指针和数组与指针和整数 C++

转载 作者:行者123 更新时间:2023-11-28 01:25:20 25 4
gpt4 key购买 nike

我正在学习 C++,并且对指向整数值的指针和指向数组的指针有何不同感到有点困惑...请参阅下面的代码:

int main(void) 
{
int* ptrOne;
int VarOne = 25;

ptrOne = VarOne;

int* ptrTwo;
int ArrayTwo[6];
ArrayTwo[0] = 2; //ect for the rest of the array, omitted here.

ptrTwo = ArrayTwo;
}

指针只是保存地址的变量。

对于行 ptrOne = VarOne,它将值 25 压入 ptrOne。

对于行 ptrTwo = ArrayTwo,它将 ArrayTwo[0] 的地址插入 ptrTwo。

为什么 ptrTwo = ArrayTwo 等同于 ptrTwo = &ArrayTwo[0],但 ptrOne = VarOne 不等于 ptrOne = &VarOne?

这是因为操作发生在数组而不是整数上吗?

在此先感谢您的帮助,我已经在我的编译器中单步执行了这段代码并查看了内存中的地址和相关值,我也阅读了 how to differentiate integer pointer and integer array pointer 的答案。 , 但它并没有完全解释差异。

最佳答案

Why is ptrTwo = ArrayOne equivalent to ptrTwo = &Array[0]

因为在 C 中,数组的名称是第一个元素的地址。您可能想进一步了解原因: How come an array's address is equal to its value in C?

but ptrOne = VarOne is NOT equal to ptrOne = &VarOne?

因为VarOne是一个单独的变量,所以VarOne是变量本身的值,而不是那个变量的地址。

实际上,如果您打开编译器警告 (-pedantic-errors),它告诉您您不能将指针类型转换为 int,那么这段代码应该是一个彻底的错误。

error: assignment makes pointer from integer without a cast [-Wint-conversion]

关于c++ - 指针和数组与指针和整数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com