结构体数组的使用

2023-05-16

测试源码

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

typedef struct stu{
	
	char name[32];
	int age;
	int score;
}stu;

int main(int argc, const char *argv[])
{
	printf("main addr is %p\n",main);
	stu stu[5];
	stu[0].age = 18;
	stu[0].score = 90;
	strcpy(stu[0].name,"zhangsan");
	
	(stu+1)->age = 19;
	(stu+1)->score = 99;
	strcpy((stu+1)->name,"lisi");
	
	(*(stu+2)).age = 20;
	(*(stu+2)).score = 77;
	strcpy((*(stu+2)).name,"wangwu");
	
	printf("stu[0].age = %d\n",stu[0].age);
	printf("stu[0].score = %d\n",stu[0].score);
	printf("stu[0].name = %s\n",stu[0].name);
	
	puts("*****************************************************");
	
	
	
	printf("(stu+1)->age = %d\n",(stu+1)->age);
	printf("(stu+1)->score = %d\n",(stu+1)->score);
	printf("(stu+1)->name = %s\n",(stu+1)->name);
	
	puts("*****************************************************");
	
	
	
	printf("(*(stu+2)).age = %d\n",(*(stu+2)).age);
	printf("(*(stu+2)).score = %d\n",(*(stu+2)).score);
	printf("(*(stu+2)).name = %s\n",(*(stu+2)).name);
	
	puts("*****************************************************");
	
	
	
	
	return 0;
}

测试结果

在这里插入图片描述

关键代码分析

表示结构体成员的三种方式

1、.方式

stu[0].age = 18;
stu[0].score = 90;
strcpy(stu[0].name,"zhangsan");

2、->方式

(stu+1)->age = 19;
(stu+1)->score = 99;
strcpy((stu+1)->name,"lisi");

3、先*成员再.方式

(*(stu+2)).age = 20;
(*(stu+2)).score = 77;
strcpy((*(stu+2)).name,"wangwu");
(*(stu+2)).age分析

(stu+2)为一个地址,(stu+2)得到数组成员,((stu+2)).age,得到数组成员里具体的内容的方式。
因为.的优先级高,所以前面需要加括号。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Teacher
{
	char name[50];
	//char *name;
	int age;
}Teacher;

int main(void)
{
	Teacher a[3] = {
		{ "a", 18 },
		{ "a", 18 },
		{ "a", 18 }
	};

	//静态
	Teacher a2[3] = { "a", 18, "b", 28, "c", 38 };
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		printf("%s, %d\n", a2[i].name, a2[i].age);
	}

	//int a[3]
	//int *, sprintf()

	int b[3] = { 0 };
	int *pB = (int *)malloc(3 * sizeof(int));
	free(pB);

	//Teacher p[3]
	Teacher *p = (Teacher *)malloc(3 * sizeof(Teacher));
	if (p == NULL)
	{
		return -1;
	}

	char buf[50];
	for (i = 0; i < 3; i++)
	{
		sprintf(buf, "name%d%d%d", i, i, i);
		strcpy(p[i].name, buf);
		p[i].age = 20 + i;
	}

	for (i = 0; i < 3; i++)
	{
		printf("%d:%s:%d\n", i+1, p[i].name, p[i].age);
	}
	printf("\n");

	if (p != NULL)
	{
		free(p);
		p = NULL;
	}

	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构体数组的使用 的相关文章

随机推荐

  • 括号匹配问题(并给出括号的位置)

    在纸上写了一个串 xff0c 只包含 39 39 和 39 39 一个 39 39 能唯一匹配一个 39 39 xff0c 但是一个匹配的 39 39 必须出现在 39 39 之前 请判断蒜头君写的字符串能否括号完全匹配 xff0c 如果能
  • Rust学习入门--【12】Rust 循环

    系列文章目录 Rust 语言是一种高效 可靠的通用高级语言 xff0c 效率可以媲美 C C 43 43 本系列文件记录博主自学Rust的过程 欢迎大家一同学习 Rust学习入门 1 引言 Rust学习入门 2 Rust 开发环境配置 Ru
  • 一年有多少节假日

    日历有 阳历 xff08 公历 xff09 和 阴历 xff08 农历 xff09 之分 每年都有法定节假日 xff0c 这些分成三类 双休 阳历节假日 阴历节假日 双休 1 xff09 周六和周日 2 2 天 阳历节假日 1 xff09
  • 走迷宫(bfs)

    给你一个 n 行 m 列的二维迷宫 39 S 39 表示起点 xff0c 39 T 39 表示终点 xff0c 39 39 表示墙壁 xff0c 39 39 表示平地 你需要从 39 S 39 出发走到 39 T 39 xff0c 每次只能
  • 计蒜客-蒜头君回家(bfs)

    蒜头君要回家 xff0c 但是他家的钥匙在他的朋友花椰妹手里 xff0c 他要先从花椰妹手里取得钥匙才能回到家 花椰妹告诉他 xff1a 你家的钥匙被我复制了很多个 xff0c 分别放在不同的地方 蒜头君希望能尽快回到家中 xff0c 他需
  • 互质数的个数(短除法分解质因数+欧拉函数)

    题意说明 xff1a 给出一个n xff0c 求1 n互质数的个数 include lt cstdio gt include lt cmath gt using namespace std int res 100000 int main i
  • arduino +ESP8266 网页WiFi控制

    首先几个问题 xff1a 1 xff0c 关于连线 xff0c 很简单 xff0c 直接ESP8266与arduino连接 xff0c 就五根线 如果没有弄好 xff0c 就单独调试一下 VCC xff0c CH PD连5v的 xff08
  • 蓝桥杯分考场

    历届试题 分考场 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 n个人参加某项特殊考试 为了公平 xff0c 要求任何两个认识的人不能分在同一个考场 求是少需要分几个考场才能满足条件 输入格式 第一行 xf
  • CCF_Markdown(正则表达式)

    试题编号 xff1a 201703 3试题名称 xff1a Markdown时间限制 xff1a 1 0s内存限制 xff1a 256 0MB问题描述 xff1a 问题描述 Markdown 是一种很流行的轻量级标记语言 xff08 lig
  • idea常用的插件

    1 lombok 省略get set方法 2 Alibaba Java Coding Guidelines 阿里的代码规范 3 Translation 谷歌中英文翻译工具 4 CodeGlance 代码迷你缩放图插件 xff0c 快速下拉拖
  • Hadoop windows本地环境安装

    hadoop使用java编写 xff0c 所以windows安装和java一样也需要配置环境变量 一 下载所需文件 JDK下载地址 xff0c jdk1 8下载Hadoop下载 xff0c hadoop下载 xff0c 进去后找到一个版本然
  • Gitlab的安装及使用

    1 GitLab概述 1 1 GitLab介绍 GitLab是利用Ruby on Rails一个开源的版本管理系统 xff0c 实现一个自托管的Git项目仓库 xff0c 可通过Web界面进行访问公开的或者私人项目 GitLab能够浏览源代
  • C语言例程:用二维数组实现矩阵转置

    用二维数组实现矩阵转置 本实例将输入的 3 4 矩阵转置为 4 3 矩阵 xff0c 并输出结果 通过本实例 xff0c 可以学习如何使用二 维数组 实例解析 二维数组的定义 二维数组定义的一般形式为 xff1a 第一部分 基础篇 X227
  • C++头文件的相互引用问题(#include” xxx“使用)

    188条消息 C C 43 43 头文件的引用问题 xff08 include使用 xff09 保护大苹果 CSDN博客 c 43 43 include头文件
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • 常用快捷键(1)----Windows组合键

    单个的Windows键是打开和隐藏开始菜单 xff0c 功能与 Esc 43 Ctrl 组合键功能相同 下面是一些常用的Windows组合键 xff1a 1 快捷键 xff1a Windows 43 Shift 43 S 功能 xff1a
  • android 获取唯一Id,小小总结一下。仅供参考

    1 获取imei xff1a 前言 xff1a 因传统的移动终端设备标识如国际移动设备识别码 xff08 IMEI xff09 等已被部分国家认定为用户隐私的一部分 xff0c 并存在被篡改和冒用的风险 xff0c 所以在Android 1
  • xib中添加自定义可编辑属性

    IOS开发中 xff0c 有些人喜欢使用xib来进行项目的开发 xff0c 使用xib可以使界面可视化 xff0c 很多控件的属性设置都可以在 xib 中设置 xff0c 减少了代码量 xff1b 同时不用一遍遍的运行程序看效果 xff0c
  • STM32使用寄存器工程模板点亮一个LED灯

    1 环境说明 xff08 1 xff09 使用的是普中STM32F103开发板 xff08 2 xff09 keil 5软件 2 目的 点亮开发板上的LED1灯 3 步骤 xff08 1 xff09 定义一系列寄存器的宏 span clas
  • 结构体数组的使用

    测试源码 span class token macro property span class token directive keyword include span span class token string lt stdio h