您的位置:首页 > 编程语言 > C语言/C++

C语言——指针与结构体 内存的动态分配

2011-08-13 12:57 1016 查看
例一 :



#include <stdio.h>
#include <string.h>

struct Student {
int sid ;
char name[200] ;
int age ;
};

void f(struct Student *p);
void g(struct Student *p);
void h(struct Student stu);

int main()
{
struct Student stu ;

f(&stu);
g(&stu);
h(stu);

//printf("%d %s %d \n" ,stu.sid , stu.name , stu.age);

return 0 ;
}

void g(struct Student *p)    //用指针可以减小内存占用 , 节省时间提高效率
{
printf("%d %s %d \n", p -> sid , p -> name , p -> age);
}

void h(struct Student stu)  //值传递
{
printf("%d %s %d \n", stu.sid , stu.name ,stu.age);
}

void f(struct Student *p)  //输入函数
{
(*p).sid = 23 ;    //等价 p -> sid = 23 ;
strcpy( p -> name , "zhangsan");
p -> age = 34 ;
}


例二 :



//////////////////////////////////
// ——注释部分为第二种方法——///
//////////////////////////////////
#include <stdio.h>
#include <malloc.h>

struct Student
{
int sid ;
int age ;
};

//struct Student *CreateStudent(struct Student **q);
struct Student *CreateStudent(void);
void ShowStudent(struct Student *);

int main()
{
struct Student *p ;

//p = CreateStudent(&p);
p = CreateStudent();
ShowStudent(p);

return 0 ;
}

//struct Student *CreateStudent(struct Student **q)
struct Student *CreateStudent(void)
{
/*
*q = (struct Student *)malloc(sizeof(struct Student));

(*q) -> sid = 78 ;  // " -> "优先级大于" * "
(*q) -> age = 23 ;
return *q;
*/
struct Student *p = (struct Student *)malloc(sizeof(struct Student));

p -> sid = 78 ;
p -> age = 23 ;

return p ;
}

void ShowStudent(struct Student *ps)
{
printf("%d %d \n" , ps -> sid , ps -> age);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐