gpt4 book ai didi

c++ - 如何在 C++ 中为指针分配常量地址?

转载 作者:太空狗 更新时间:2023-10-29 19:46:10 24 4
gpt4 key购买 nike

我想检查当我增加/减少指针值时指针地址将如何改变。

我的代码是:

void pointers_plus_minus()
{
char *c = (char *) 0x7fff80ccd35c;
int *i = (int *) 0x7fff80ccd35c;

c++;
i++;

cout << "char pointer" << c << endl;
cout << "int pointer" << i << endl;
}

但是这段代码给我 Segmentation fault (core dumped)

我知道地址有问题,但不清楚是什么。如何解决?我正在使用 64 位 Ubuntu。

最佳答案

您不能像操作整数一样对指针进行操作(好吧,不能在明确定义的上下文之外)。

你只能做 c++i++如果指针指向您拥有的数组内部。

哎呀,我认为这实际上是明确定义的,因为 1 个元素被视为 1 的数组,并且允许您越过数组末尾一个元素。从该指针读取仍然是未定义的。

无论如何,虽然未定义,但崩溃可能是因为 cout << c试图打印出一个字符串,而不是一个指针。转换到 void* :

cout << "char pointer" << static_cast<void*>(c) << endl;

虽然这会满足你的好奇心,这很好,但它仍然是未定义的,不应该这样做。

关于c++ - 如何在 C++ 中为指针分配常量地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843434/

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