栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

对C++中指针的天马行空后,出现一系列发现和问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对C++中指针的天马行空后,出现一系列发现和问题

文章含有以下内容: 

---对野指针进行定地址(随机定)---

---使char指针的地址与int指针相同---

引言:

以下是来自刚开始学指针的一些神奇想法和另作者头大的问题:

在最开始接触指针的时候我创建的是int类型,一切都是那么平平无奇,根据教程中的*p++,*(p++),(*p)++来看,那么,我纯粹对int类中各指针p的地址++进行了一番探索:

#include
using namespace std;
int main(){
    int *p=NULL,*j=NULL,*i;
    int a=1;
    p=&a;
    cout<<"指针p原地址为:"< 

结果为:

指针p原地址为:0x61fe04
空指针j原地址为:0
野指针i原地址为:0x1e
指针p++:0x61fe08
空指针j++:0x4
野指针i++:0x22
指针p++,++:0x61fe0c
空指针j++,++:0x8
野指针i++,++:0x26

这里有了一个问题:空指针++后,性质上会变成野指针嘛?

知识匮乏:没有解决此问题           又引出以下现象:

通过对地址++使得原有地址的值在新地址也能解引用(可能是巧合,或者bug)
#include
using namespace std;
int main(){
    int *p;
    int *i;
    cout<<"p:"< 

结果为:

p:0x10
i:0xf31870
i++:0xf31874
*i++:0
i++,++:0xf31878
*i++,++:0

                                                                 

都是0? 值的地址这么简单就改变了嘛?

 emmm

技穷,这个问题我放弃了

敲着敲着又有了个新发现:在定义多个空指针,有值指针,再混搭野指针的时候:                                               野指针会听话起来!
#include
using namespace std;
int main(){
    int *m;
    int *k;
    int *w;
    int *n;
    int *p=NULL,*j=NULL;
    int a=1;
    p=&a;
    cout<<"野指针m原地址为:"< 

结果为:

野指针m原地址为:0x1e
野指针k原地址为:0x8
野指针w原地址为:0x401519
野指针n原地址为:0x8
指针p原地址为:0x61fdec
空指针j原地址为:0

有的野指针会:

1,很听话的排队(巧合嘛?)

2,地址重复

3,每次运行地址不变

以下又是派生的一个有趣的问题:

将char无值的指针累加减到int有值的指针地址那,会发生什么?

 介于指针混搭现象会导致个别指针听话的行为,以下是作者拼凑出来的,为了呈现效果!

#include
using namespace std;
int main(){
    int *n;
    int *j;
    char *m;
    int *p=NULL;
    int a=1;
    p=&a;
    cout<<"野指针n原地址为:"< 

不同类型的指针地址一样了,可是最后一行代码出现了问题:

野指针n原地址为:0xda1870
野指针j原地址为:0x1e
char野指针m原地址为:0x8
指针p原地址为:0x61fdfc
char野指针m现在的地址为:0x61fdfc
解m为:
解p为:1
                                         不报错!也没值?

这个结果让我很是惊讶!

到这里已经词穷,技穷了,却有了以下几个问题:

1,空指针++后性质上还是空指针嘛?

2,《通过对地址++使得原有地址的值在新地址也能解引用》中,为什么会出现两个0?

3,使char无值的指针累加减到int有值的指针的地址那,对两个指针进行解引用,出现相关问题

以上来自刚学C++刚学指针的吐槽(可能存在很多bug)

如果读者大大有解,还望指点12

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号