[英]How do I prevent my pointer for an array element from being reassigned
我对 C 很陌生,所以也许我使用的指针不正确。 我正在开发一个更大的程序,我遇到了一个问题,即指向数组第一个元素的指针随着数组的变化而不断变化(使用 PriorityQueue,所以它不断被重新排列,所以我'我遇到了问题)。
我已经为正在发生的事情做了一个非常基本的例子:
#include <stdio.h>
int main() {
int testArray[] = {0, 1, 2, 3};
int *pFirstElement = &testArray[0];
printf("My first element: %d\n", *pFirstElement); // Prints 0
testArray[0] = 9;
printf("My first element: %d", *pFirstElement); // Prints 9 -> I want it to print 0
return 0;
}
我想要一种方法,以便在我手动将 pFirstElement 重新分配为数组的第一个元素之前,不会重新分配 pFirstElement。 基本上,对数组的修改不应更改 pFirstElement 的值。 是因为指针指向testArray[0]
的 memory 地址,而我不应该使用指针吗?
我使用指针的原因是我可以将它初始化为 NULL,然后我的 PriorityQueue 的一个用例是如果指针是 NULL,我知道我基本上需要出队。 不知道我还能怎么做这个逻辑。
任何建议都有帮助,谢谢!
由于pFirstElement
只是对存储数组第一个元素的 memory 的引用,重新分配数组的第一个元素将更改pFirstElement
指向的值。
将int
变量而不是int *
设置为testArray[0]
而不是&testArray[0]
将创建数据的副本,而不是简单地存储对它的新引用。 该副本现在独立于testArray
中的数据。
创建数据的副本是唯一的方法。 指针本身不能记住它指向的 memory 的过去值。
变量pFirstElement
指向memory中的position,这里是第一个数组元素。 如果现在访问指针指向的值,则访问数组的第一个元素。 如果您只是想要第一个元素的副本,请使用int firstElement = testArray[0];
,否则*pFirstElement =...
等同于textArray[0] =...
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.