结构体学习:
为什么会出现结构体:
为了表示一些复杂的数据,而普通的基本类型变量无法满足要求;
定义:
结构体是用户根据实际需要自己定义的符合数类型;
如何使用结构体:
//定义结构体
struct Student
{
int sid;
char name[200];
int age;
};
//1.整体赋值
struct Student st = {1001,"zhangsan",18};
//2.单个赋值
st.id = 1001;
strcpy(st.name,"zhangsan");
st.age = 18;
//3.指针方式赋值
struct Student *pst;
pst->sid = 1001;
strcpy(pst->name,"zhangsan");
pst->age = 18;
注意事项:
结构体变量不能算数计算,但是可以相互赋值;普通结构体变量和结构体指针变量作为函数传参的问题,推荐使用传递结构体指针的方式,这样效率高节约内存。
malloc学习:
示例代码:
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int len;
char a[5] = {1,2,3,4,5};
printf("请输入你要创建的数组长度:len = ");
scanf("%d",&len);
int * pArr = (int *)malloc(sizeof(int) * len);
for (int i = 0; i < len; i++)
{
scanf("%d",&pArr[i]);
}
for (int i = 0; i < len; i++)
{
printf("%d\n",pArr[i]);
}
free(pArr);
return 0;
}
运行结果:

跨函数使用内存:
#include <stdio.h>
#include <malloc.h>
struct Student
{
int sid;
int age;
};
struct Student * creatlist()
{
struct Student * ps = (struct Student *)malloc(sizeof(struct Student));
ps->age = 99;
ps->sid = 88;
return ps;
}
void showlist(struct Student * pst)
{
printf("%d %d\n",pst->sid,pst->age);
}
int main(void)
{
struct Student * ps;
ps = creatlist();
showlist(ps);
return 0;
}
运行结果:

本文详细介绍了C语言中结构体的使用,包括其定义、整体和单个赋值方法,以及结构体指针在函数参数传递中的优势。同时探讨了malloc内存管理在动态分配结构体数组和跨函数使用中的应用。
1万+

被折叠的 条评论
为什么被折叠?



