本文主要是介绍C语言--结构体指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include<stdio.h>
#include<stdlib.h>
struct Info
{
int age;
int num;
};
//普通指针能做什么,结构体指针就能做什么
//1、充当函数参数
void print(struct Info* p)
{
printf("%d %d \n",p->age,p->num);
}
//2、充当函数返回值
struct Info* creatInfo(int age,int num)
{
struct Info* info3=(struct Info*)malloc(sizeof(struct Info));
info3->age=age;
info3->num=num;
return info3;
}
int main()
{
//结构体指针 就是加一个*号就行了,不用想的那么复杂
//1、结构体指针依然可以被NULL初始化
struct Info*info=NULL;
//info->age=18;//错误的 因为内存地址是空的,不能使用
//info->num=1001;
//2、指针如何转换成变量呢?
//2.1 用变量地址
//用结构体变量的地址赋给结构体指针
struct Info info1;
struct Info*info2=NULL;
info=&info1;
info->age=18;//这样就可以使用了
info->num=1001;
printf("%d %d \n",info->age,info->num);
printf("%d %d \n",info1.age,info1.num);
//2.2 动态内存申请
info2=(struct Info*)malloc(sizeof(struct Info));
//安全考虑,一般申请内存需要考虑申请是否成功
if(info2==NULL)
{
printf("申请内存失败");
return 0;
}
info2->age=21;//这样就可以使用了
info2->num=1002;
printf("%d %d \n",info2->age,info2->num);
free(info2);//释放内存
info2=NULL;//赋值为NULL,为了后面使用
info2=creatInfo(29,1004);
print(info2);
free(info2);//释放内存
system("pause");
return 0;
}
这篇关于C语言--结构体指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!