我是靠谱客的博主 清爽枫叶,最近开发中收集的这篇文章主要介绍【学习生涯】结构体数组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C语言结构体嵌套

用老师的话来说就是剥洋葱(比较简单)

  • 变量方式访问: .
  • 指针的方式访问:->
  • 或者直接包含

结构体数组定义

//和基本数据类型定义方式是一样的
#include <stdio.h>
#include <stdlib.h>
struct MM 
{
	char name[20];
	int age;
}mmArray[3];
struct MM g_array[3];

int main() 
{
	struct MM array[3];
	return 0;
}

结构体数组初始化

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct MM 
{
	char name[20];
	int age;
}mmArray[3]= { {"小芳",18},{"小美",28},{"小花",27} };
struct MM g_array[3]= { {"小芳",18},{"小美",28},{"小花",27} };
int main() 
{
	//创建时候做初始化
	struct MM array[3] = { {"小芳",18},{"小美",28},{"小花",27}};
	memset(array, 0, sizeof(struct MM) * 3);
	//循环初始化
	struct MM temp[3]; 
	for (int i = 0; i < 3; i++) 
	{
		scanf_s("%s%d", temp[i].name,20, &temp[i].age);
	}
	return 0;
}

结构体遍历

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct MM 
{
	char name[20];
	int age;
}mmArray[3]= { {"小芳",18},{"小美",28},{"小花",27} };
struct MM g_array[3]= { {"小芳",18},{"小美",28},{"小花",27} };
int main() 
{
	//小芳 18
	//创建时候做初始化
	struct MM array[3] = { {"小芳",18},{"小美",28},{"小花",27}};
	memset(array, 0, sizeof(struct MM) * 3);
	//循环初始化
	struct MM temp[3]; 
	for (int i = 0; i < 3; i++) 
	{
		scanf_s("%s%d", temp[i].name,20, &temp[i].age);
	}
	for (int i = 0; i < 3; i++) 
	{
		printf("%st%dn", temp[i].name, temp[i].age);
	}
	for (int i = 0; i < 3; i++)
	{
		printf("%st%dn", (temp+i)->name, (temp + i)->age);
	}
	return 0;
}

结构体指针基本操作

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct MM 
{
	char name[20];
	int age;
};
void testFirst() 
{
	struct MM mm = { "小美",19 };
	struct MM* pmm = NULL;
	pmm = &mm;
	printf("%st%dn", pmm->name, pmm->age);

	struct MM array[3] = { {"小美",19},{"小美2",28},{"小美3",23} };
	pmm = array;
	for (int i = 0; i < 3; i++) 
	{
		printf("%st%dn", pmm[i].name, pmm[i].age);
	}
}
int main() 
{
	testFirst();
	return 0;
}

结构体指针动态申请内存

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct MM 
{
	char name[20];
	int age;
};
void testSecond() 
{
	//申请一个变量内存
	struct MM* pmm = (struct MM*)malloc(sizeof(struct MM));
	assert(pmm);
	strcpy_s(pmm->name, 20, "小芳");
	pmm->age = 19;
	printf("%st%dn", pmm->name, pmm->age);
	free(pmm);
	pmm = NULL;
	//申请一段内存
	struct MM* pArray = (struct MM*)malloc(sizeof(struct MM) * 3);
	assert(pArray);
	for (int i = 0; i < 3; i++) 
	{
		strcpy_s(pArray[i].name,20, "美美");
		pArray[i].age = 19;
		printf("%st%dn", (pArray+i)->name, (pArray+i)->age);
	}
	free(pArray);
	pArray = NULL;
}
int main() 
{
	testSecond();
	return 0;
}

结构体嵌套结构体指针

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct MM 
{
	char name[20];
	int age;
};
struct Info 
{
	int num;
	struct MM* pmm;
};
void testThird() 
{
	struct Info info = { 1001,NULL};
	struct MM mm = { "小妹",18 };
	struct Info info2 = { 1002,&mm };

	struct Info* pinfo = (struct Info*)malloc(sizeof(struct Info));
	assert(pinfo);

	pinfo->num = 1004;
	pinfo->pmm = (struct MM*)malloc(sizeof(struct MM));
	assert(pinfo->pmm);
	strcpy_s(pinfo->pmm->name, 20, "小小");
	pinfo->pmm->age = 29;

	printf("%dt%st%dn", pinfo->num, pinfo->pmm->name, pinfo->pmm->age);
}
int main() 
{
	testFirst();
	testSecond();
	testThird();
	return 0;
}

最后

以上就是清爽枫叶为你收集整理的【学习生涯】结构体数组的全部内容,希望文章能够帮你解决【学习生涯】结构体数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部