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

大神们在线求帮请分析下,结构体指针指向普通数组 请问,在C语言中,结构体指针可以指向普通数据吗?
最新回答
你是我所有的梦

2024-09-06 13:03:47

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

};

p->a[0]; // 是错误的,因为abc里面没有a这个成员,只有b这个成员
p->b[0]; // 这样才是正确的
只要知道一点就行了,结构体变量或指针,只能调用结构体内部成员的,没有的成员统统不能调用
追问
如果结构体中有a[10]这个成员,那么p->a[0]中p指向的是结构体内的成员吧?和外部又定义的a[10]没有关系吧?
追答
没任何关系,结构体变量或指针,调用的仅仅是结构体里面的成员,无论你名字是怎样,都跟外面的变量无任何关系
追问
谢谢你,呵呵
夙词欢

2024-09-06 02:42:41

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

2024-09-06 11:56:02

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