那要看你的结构体里面有什么成员,如果结构体定义成
struct abc
{
unsigned char b[10];
};
p->a[0]; // 是错误的,因为abc里面没有a这个成员,只有b这个成员
p->b[0]; // 这样才是正确的
只要知道一点就行了,结构体变量或指针,只能调用结构体内部成员的,没有的成员统统不能调用
肯定是不合法的咯,p和a分配的内存大小都不一样,而且如果是p指向a,应该是p=a;你这样写的意思是a是p的一个成员
按你的意思应该是不合法,但是如果struct abc里面有成员变量名字也叫a的话这个语句本身是合法的,但是不是指向了unsigned char a[10]的第一个元素,而是指向p指向的结构体里面的成员