结构体指针指向普通数组 请问,在C语言中,结构体指针可以指向普通数据吗?

如:unsigned char a[10];struct abc *p;p->a[0]; //合法吗?
2024-11-18 20:25:08
推荐回答(3个)
回答1:

那要看你的结构体里面有什么成员,如果结构体定义成
struct abc
{
unsigned char b[10];

};

p->a[0]; // 是错误的,因为abc里面没有a这个成员,只有b这个成员
p->b[0]; // 这样才是正确的
只要知道一点就行了,结构体变量或指针,只能调用结构体内部成员的,没有的成员统统不能调用

回答2:

肯定是不合法的咯,p和a分配的内存大小都不一样,而且如果是p指向a,应该是p=a;你这样写的意思是a是p的一个成员

回答3:

按你的意思应该是不合法,但是如果struct abc里面有成员变量名字也叫a的话这个语句本身是合法的,但是不是指向了unsigned char a[10]的第一个元素,而是指向p指向的结构体里面的成员