结构体指针两种赋值方式怎么会出错

如题所述

第1个回答  2019-05-13
pid
*sptr
=
&volpid;
定义
pid
类型的指针并初始化为
volpid
变量的地址,注意,这里不是“赋值”,而是“初始化”。
pid
*sptr;
*sptr
=
&volpid;

sptr
指向的变量赋值。
错误1:类型不同,*sptr
是指向了变量,就是变量本身,而
&volpid
是变量的地址,一个是变量,一个是变量的地址。
错误2:sptr
没有初始化,给其指向的变量赋值,可能造成崩溃。
错误3:即使
sptr
已初始化,也不能为其指向的变量赋值,因为该变量类型是
struct,按
C
语言的类型划分,属于“聚集类型(aggregation)”,聚集类型不能整体赋值。
改成这样才正确:
pid
*sptr;
sptr
=
&volpid;
定义
sptr
指针,然后赋值为
volpid
变量的地址。
相似回答