A problem from my friend, what's the result of the following code:
class str{
public:
int x;
char s[0];
};
class foo{
public:
str * p;
};
int main() {
foo f = {0};
str* p1 = NULL;
if (f.p->s){
printf("%d\n", f.p->s);
}
return 0;
}
This sentence sets p to NULL:
foo f = {0};
f.p is a pointer of str, so f.p is an offset. I.e., f.p->s = base address + 4
So the result is 4