加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在c处为指针分配常量地址?

发布时间:2020-12-16 10:24:26 所属栏目:百科 来源:网络整理
导读:我想检查当我增加/减少指针值时如何更改指针地址. 我的代码是: void pointers_plus_minus(){ char *c = (char *) 0x7fff80ccd35c; int *i = (int *) 0x7fff80ccd35c; c++; i++; cout "char pointer" c endl; cout "int pointer" i endl;} 但是这段代码给了
我想检查当我增加/减少指针值时如何更改指针地址.

我的代码是:

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尝试打印出字符串,而不是指针.把它变成无效*:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读