您可以使用指针访问变量以避免直接编辑变量吗? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您可以使用指针访问变量以避免直接编辑变量吗? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我想知道你是否可以通过分配指向变量的指针然后修改指针然后修改受保护的变量来避免类中的安全变量。这完全只是一个想法,但我最近一直在学习指针,我不知道足够的数字。

答案

我真的不明白你的想法,但我想你提到privateprotected变量并使用指针改变它们的值。如果你的问题是相同的,那么我的回答是“如果你真的想要更改私有变量,那么你可以使用指针。为了避免这种情况,除了仔细使用指针之外别无他法”。下面是一个程序,通过使用指针显示更改private variables

#include <iostream>
using namespace std;
class Demo
{
private:
   int private_var_1;
   int private_var_2;
public:
   Demo()
   {
     private_var_1 = 1;
     private_var_2 = 2;
   }
   void show()
   {
        cout<<private_var_1<<" "<<private_var_2<<" ";
   }
}; 
int main() {
    Demo d;
    //now d.private_var_1 = 1 and d.private_var_2 = 2
    //BUT we can completely modify d.private_var_1 and d.private_var_2
    int* pointer = (int*)&d;
    *pointer = 111111;  //then d.private_var_1 = 111111 
    pointer += 1;       //move the pointer to next 4 bytes, now
                        //the pointer point to d.private_var_2
    *pointer = 222222;  //then d.private_var_2 = 222222;
    d.show();
    return 0;
}

以上是关于您可以使用指针访问变量以避免直接编辑变量吗? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何将两个变量关联起来

Delphi多线程访问公共变量,可以吗

C语言指针基本概念及其指针变量的定义是啥

数组变量可以作赋值操作吗?

51单片机可以通过指针访问寄存器吗

2017.11.14 指针