结构体变量和结构体指针变量做为函数参数传递的问题(主要是说指针的优势)函数
推荐使用结构体指针变量做为函数参数来传递。spa
对结构体的内容输入输出.net
/* 对结构体输入输出的案例 */ # include <stdio.h> # include <string.h> //为须要调用的三个函数,设置前置声明 void InputMember(struct student * pMem); void OutputOne(struct student * pMem); void OutputTwo(struct student pMem); //定义一个结构体 struct student { char name[30]; int age; float score; }; //这个分号不能省略 int main(void) { struct student member; /* 输入函数,要想跨函数修改值的内容,必须传递指针 */ InputMember(&member); /* 输出函数,传递指针输出 */ OutputOne(&member); /* 输出函数,传递内容输出 */ OutputTwo(member); return 0; } /* 定义形参为指针变量,能够跨函数对变量修改 */ void InputMember(struct student * pMem) { strcpy(pMem->name,"张三"); pMem -> age = 23; pMem -> score = 89.5; } /* 经过接受指针的方式,进行输出 */ void OutputOne(struct student * pMem) { printf("%s\n%d\n%f \n", pMem->name, pMem->age, pMem->score); } /* 经过赋值的方式进行输出 之因此把这两个函数放到一块儿写,主要是为了区别: 传递指针 和 传递数据 的区别 */ void OutputTwo(struct student pMem) { printf("%s\n%d\n%f \n", pMem.name, pMem.age, pMem.score); } /* VC++6.0上运行的结果: ===================================== 张三 23 89.500000 张三 23 89.500000 ===================================== 结论: 输入函数,必须使用指针操做。 输出函数,传递指针和传递数值结果都是正确的。 但!是!对内存的消耗和执行效率上是不一样的。 */
究竟是发送指针仍是发送内容指针
指针的优势之一:code
快速的传递数据blog
耗用内存小 内存
执行速度快ci
假若有一个占用100字节的类型,若是发送内存的话,在函数中也一样须要开辟出100字节的内存,用于存放发送过来的值,这就消耗了内存。内存开辟出来以后,还要把这100字节的内容给拷贝到函数开辟的内存中,这就消耗了时间。既浪费了内存,又耗费了时间,so,仍是推荐使用传递指针的方式。get
这就是指针的优势。博客
学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog