类指针本身有类成员吗?

时间:2017-03-19 13:09:22

标签: c++ class pointers

我想澄清一些概念

1-指针只能存储一个地址,指针本身不能像任何其他变量那样存储数据。对? (因为下面的代码没有运行)

int *myptr;
*myptr=20;

cout<<(*myptr);

2-如果您创建一个类的指针,请说 FOO

class foo
{
public:
  int numb1 ; 
  char alphabet; 
}

// this doesn't run
void main()
{
   foo *myptr ; 
   cout<< myptr->numb1;     
}

所以我的问题是,类foo( * myptr )的指针是否有变量 numb1 字母?如果不是那么foo指针和int指针之间的区别是什么(除了每个指针只能指向它的相应数据类型)

1 个答案:

答案 0 :(得分:1)

指针有足够的存储空间来包含表示内存中某个位置的数字。完全可以使用该空间来存储其他信息(信息仍然需要适合指针的存储)。

例如,您可以在指针内存储一个long值:

#include <iostream>
using namespace std;

int main() {
    void *ptr;
    ptr = (void*)20;

    long information = reinterpret_cast<long>(ptr);
    std::cout<<information<<std::endl;
    return 0;
}

你可以try it out here看到它会输出数字20。

编辑:这里有一个非空类型指针

#include <iostream>
using namespace std;

struct test{int a;};

int main() {
    // your code goes here
    test* ptr;
    ptr = (test*)20;

    long information = reinterpret_cast<long>(ptr);
    std::cout<<information<<std::endl;
    return 0;
}