网上搜了下大概,都讲的是形式上的区别比如指针用的->,变量用的.之类的 其实最主要的区别体现在函数的传参 由于结构体指针传的是地址,所以在函数中的所有操作会影响实参。 而结构体变量在函数传参的过程中实现了形参和实参的全拷贝,并不会改变实参的内容
一般来说结构变量定义的时候就分配了内存空间;但结构体指针,和其它指针一样,只有4个字节的指针大小,在使用时需要先动态的分配内存。
1,很显然啊,p是什么,p是指向结构体这个类型的指针。也就是说,p里面放的地址,你对它进行引用,他去这个地址找,会发现一个结构体变量。你得思维开阔点儿,把结构体也想成一个普通类型的变量。stu.age是int类型,你讲int类型的地址给一个结构体,肯定不对啊。但是我想说的是,这两个地址的值...
形参是结构体变量的,你对该结构体的所有修改都不会影响到实参,因为形参是实参的一个完整拷贝。形参是结构体指针的,你对该结构体的修改直接影响实参的结构体数据。因为形参和实参都指向同一个内存区块。注意:形参是一个指针,如果只改变指针本身,则不影响实参。
定义结构体变量,系统会为这个变量分配实际的内存空间。定义一个结构体指针,那它就只是个指针,大小也就是系统的地址长度,它里面的值应该指向一个具体的结构体内存空间,才算正常操作。定义了指针以后,要么就用malloc分配空间,要么指向一个已经存在的变量的地址,才能做实际操作,否则只是给系统添乱的。
结构名来表示结构成员的话用.结构指针来表示结构成员的话用-> 俩个都是用来指向结构成员
第二个程序,空间都没有分配就初始化赋值,这根本就是在给系统添乱嘛。