C/C++教程

C语言--结构体指针

本文主要是介绍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语言--结构体指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!