64,651
社区成员
发帖
与我相关
我的任务
分享
class A
{
public:
int b;
int c;
};
int main(int argc, char *argv[])
{
cout<<&A::c<<endl;
return 0;
}
#include <iostream>
using namespace std;
class A{
public:
int b;
int c;
};
int main(){
cout<<&A::c<<endl;
//以下为正确的用法
int A::* pOffset = &A::c;
int nOffset = (int)(*(void**)(&pOffset));
cout<<nOffset<<endl;
return 0;
}
#include <iostream>
using namespace std;
class A
{
public:
int b;
int c;
};
int main()
{
A a;
int A::*p;
p = &A::b;
printf("%d\n",p); //输出0
cout << p << endl; //输出1
a.*p = 10;
cout << a.b << endl; //输出b的值10
a.c = 20;
p = &A::c;
printf("%d\n",p); //输出4
cout << p << endl; //输出1
cout << a.*p << endl; //输出c的值20
return 0;
}
#include<iostream>
using namespace std;
class A
{
public:
int b;
int c;
};
int main(int argc, char *argv[])
{
cout<<&A::c<<endl;
return 0;
}
[/quote]
选b ,c 那个变量都是一样的效果的。
你为什么认为是 5 呢?[/quote]
&A::c是取偏移(offset),不是取地址的值,内存中b和c是偏移是不一样的[/quote]
只是申明,何来地址一说?[/quote]
那偏移值为何一样?[/quote]
一个空类 就只占一个字节的内存大小#include<iostream>
using namespace std;
class A
{
public:
int b;
int c;
};
int main(int argc, char *argv[])
{
cout<<&A::c<<endl;
return 0;
}
[/quote]
选b ,c 那个变量都是一样的效果的。
你为什么认为是 5 呢?[/quote]
&A::c是取偏移(offset),不是取地址的值,内存中b和c是偏移是不一样的[/quote]
只是申明,何来地址一说?[/quote]
那偏移值为何一样?#include<iostream>
using namespace std;
class A
{
public:
int b;
int c;
};
int main(int argc, char *argv[])
{
cout<<&A::c<<endl;
return 0;
}
[/quote]
选b ,c 那个变量都是一样的效果的。
你为什么认为是 5 呢?[/quote]
&A::c是取偏移(offset),不是取地址的值,内存中b和c是偏移是不一样的[/quote]
只是申明,何来地址一说?#include<iostream>
using namespace std;
class A
{
public:
int b;
int c;
};
int main(int argc, char *argv[])
{
cout<<&A::c<<endl;
return 0;
}
[/quote]
选b ,c 那个变量都是一样的效果的。
你为什么认为是 5 呢?[/quote]
&A::c是取偏移(offset),不是取地址的值,内存中b和c是偏移是不一样的#include<iostream>
using namespace std;
class A
{
public:
int b;
int c;
};
int main(int argc, char *argv[])
{
cout<<&A::c<<endl;
return 0;
}
[/quote]
选b ,c 那个变量都是一样的效果的。
你为什么认为是 5 呢?