一个结构体名字是个指针 这个指针的地址是结构体的第一个成员?还是与成员没关系?

问题描述:

一个结构体名字是个指针 这个指针的地址是结构体的第一个成员?还是与成员没关系?
2个回答 分类:综合 2014-11-06

问题解答:

我来补答
这个是指针的名字与成员没有直接关系.它就是一个名字而已.
只不过用这个名字去声明的结构体变量全部都是指向该结构体的指针,并且声明的时候不需要加*而已.(通过变量访问的时候还是要用*的)
一种声明的方法,方便程序里的处理,仅此而已.
再问: sturct a{ int a double b }emp_i *emp_i emp_i *emp_i 没区别? 并且声明的时候不需要加*而已。(通过变量访问的时候还是要用*的)看不懂能举个例子吗?
再答: struct a{ int a; double b; }emp_i , *emp_i; //你这样仅仅是定义了两个struct a 类型的变量而已,其中一个是指针。 要这样去理解结构体名字是指针: typedef struct { int a; double b; }emp_i, *pemp_i; //typedef 了两个新的数据类型(结构体),其中一个是指针方式的名字 int main(void) { char i = 'y'; emp_i a1; //emp_i 声明的a1是一个实体,声明了就已经有存储空间了 pemp_i b1 = &a1; //pemp_i 声明的b1是一个指针(但这里不用加*号,因为pemp_i已经被指定为指针),它可以指向一个struct a 的实体。 a1.a++; //a1的元素访问方式 实体方式 b1->a++; //b1的访问方式 指针方式 }
再问: pemp_i b1 = &a1; 假如我不指向一个实体,就这个样pemp_i b1 就不能用struct 结构的成员了啦? b1可以指向别的结构的的实体吗?
再答: b1如果声明的时候不指定,那么后面使用前要对指针赋值(野指针操作非法)。 或者用b1 = (pemp_i) molloc(sizeof(emp_i))申请新的结构空间(注意size()里面的参数不是pemp_i哦)。
 
 
展开全文阅读

补充回答:

答的非常好
网友(116.13.117.*) 2018-12-21

剩余:2000