我在vs中 野指针那一块遇到了这么一些疑问 还请懂哥指导一下
1.首先 在空指针那一块 空指针是指向内存编号为0的指针 空指针的作用是初始化代码 空指针是不可以访问的 那么我想知道这个访问是什么意思 是解引用的意思吗?也就是说空指针没办法出现 p之类的字眼? 虽然空指针没办法访问的原因是它指向内存编号为0的地方 而内存编号在0到255区间内 是系统所占用的内存空间 所以没有权限访问 我想知道空指针内可以存放内存吗 还是说空指针内可以存放内存但是不可以访问罢了?
2.在野指针的学习中 int p=(int)0x1100 这个就是一个野指针的创建 我想问一下 如果我写成 intp=0x1100;
程序会提示我说 int类型的值不能用于初始化int类型的实体 这个是什么意思呢? 还有就是0x1100是16进制的内存地址编号 如果说我想变成10进制的话 确实应该在前面加上(int) 但是在野指针中 或者说在指针中 访问地址编号+变成10进制 却多了个号 变成了 (int) 我可以理解成这是指针的特殊用法吗?
希望各位懂哥指导一下 我刚学c++ 谢谢各位懂哥!小廷在这里表示真的感谢!
首先,我要纠正一下你的观念
int * p = (int) 0x1100
和 int * p = 0x1100
没有区别,(int)只是将其转成int类型的数据,不是转成十进制了其实电脑开机后物理内存的每个字节中都有值且都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……