C语言定义结构体变量时用结构指针和普通变量的区别是什么

请问这两种有什么区别吗?为什么一个会导致单片机重启,一个正常运行呢?

定义结构体变量,系统会为这个变量分配实际的内存空间。定义一个结构体指针,那它就只是个指针,大小也就是系统的地址长度,它里面的值应该指向一个具体的结构体内存空间,才算正常操作。定义了指针以后,要么就用malloc分配空间,要么指向一个已经存在的变量的地址,才能做实际操作,否则只是给系统添乱的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-31
第二个程序,空间都没有分配就初始化赋值,这根本就是在给系统添乱嘛。追问

={0}或者=NULL不是分配空间吗?

追答

={0}或者=NULL是将stationpara指针指向NULL地址,所以后面的程序中还应该调用malloc()之类的函数为stationpara指针分配空间,之后才可以stationpara->ssid[0]='\n'之类的操作。而第二个程序中的stationpara指针在指向NULL地情况下就直接stationpara->ssid[0]='\n'

本回答被提问者采纳
相似回答