面向对象编程问题求解答

问题遇到的现象和发生背景

c语言面向对象编程,强制把ip1中p的地址赋值给a

用代码块功能插入代码,请勿粘贴截图

#include"Mobile.h"
#include
class oss{
private:
char *p;
public:
//oss();
void mass();
};

void oss::mass(){
p=new (char);
printf("%p\n",p);
*p='a';
printf("%c\n",p);
};
int main()
{
oss ip;
oss ip1;
ip1.mass();
ip.mass();
char a;
a=(char
)0x02250730;//强制给
a,ip1的地址
printf("%c",*a);
printf("%p\n",a);
}

运行结果及报错内容

到了该打印a的值的时候就直接跳出运行了,但是可以输出a的地址

我的解答思路和尝试过的方法

我感觉是面向对象的封装性导致的

我想要达到的结果

为什么会跳出运行了?到底是不是封装性导致的?

char a;
a=(char)0x02250730;//强制给a,ip1的地址
printf("%c",*a);

这3句话有问题:

  1. a不是指针
  2. 强制给a,ip1的地址 这个是char类型,会被截断一个字节,并且每次运行的时候地址有可能有变化。 还有ip1是一个对象不能这样给
  3. printf("%c",*a); *a去取内容的时候会导致非法访问

这样改看是否可行

  1. 对于oss对象加一个方法获取p指针
  2. char a; 改成 char *a;
  3. a=(char)0x02250730; 改成 a = ip1.get_p(); 假如get_p是获取oss p的值