C语言-结构体指针及结构体嵌套

2023-05-16

C语言中结构体是一种构造类型,和数组、基本数据类型一样,可以定义指向该种类型的指针。结构体指针的定义类似其他基本数据类型的定义,格式如下

struct 结构体名 * 指针名;

比如:

struct person{char[20] name; int age;};//先定义一个人的结构体

struct person *p;//然后可以定义一个人的结构体指针

struct person p1 = {"zhangsan",20};

*p = &p1;//结构体指针的初始化

当定义结构体时,如果结构体中的成员又是一个结构体,那么就称为结构体的嵌套。比如:

struct room{

   int chair;

   int computer;

   struct person children;

};

嵌套的结构体初始化方式如下:

struct room r1 = {1,1,{"xiaohong",7}};

嵌套结构体的初始化参照基本结构体的初始化方式,对结构体的元素分别进行初始化。

结构体中不可以嵌套自身的结构体,但是可以嵌套指向自身的指针。

关于上面所述的结构体嵌套及嵌套指向自身的结构体指针,下面有几个实例:

结构体的嵌套以及结构体指针
#include "stdafx.h"
#include <string.h>

int main(int argc, char* argv[])
{
//结构体指针
	struct office{
	int chair;
	int computer;
	} ;
	struct office officeOne = {10,10};
	struct office *p = &officeOne;
	printf("chair = %d,computer = %d\n",(*p).chair,(*p).computer);
	return 0;
}
#include "stdafx.h"
#include <string.h>
//结构体指针以及结构体嵌套
struct employee{
	char name[10];
	int age;
};
int main(int argc, char* argv[])
{
//结构体嵌套
	struct office{
	int chair;
	int computer;
	struct employee em;
	} ;
	struct office officeOne = {10,10,{"zhangsan",25}};
	struct office *p = &officeOne;
	printf("chair = %d,computer = %d\nname = %s,age = %d\n",(*p).chair,(*p).computer,officeOne.em.name,officeOne.em.age);
	return 0;
}
#include "stdafx.h"
#include <string.h>
//结构体指针以及结构体嵌套结构体指针
int main(int argc, char* argv[])
{
//结构体指针
	struct office{
	int chair;
	int computer;
	struct office *of1;
	} ;
	struct office officeOne = {10,10,NULL};
	struct office officeTwo = {10,10,&officeOne};
	printf("chair = %d,computer = %d\nchair1 = %d,computer1 = %d\n",officeTwo.chair,officeTwo.computer,(*(officeTwo.of1)).chair,(*(officeTwo.of1)).computer);
	return 0;
}



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

C语言-结构体指针及结构体嵌套 的相关文章

  • 在家远程控制 少了它俩简直太遗憾了

    互联网公司的值班 xff0c 本意在于出现问题时有人及时处理 xff0c 毕竟上线运行的产品 xff0c 出问题可能会影响到公司的整体收益 虽然工作是965 xff0c 但值班日程表却明明白白写着谁负责保障今天的产品运行正常 涉及到技术 运
  • Openstack Kolla-Ansible安装部署

    Openstack Kolla Ansible安装部署 部署节点制作 环境准备 CentOS环境安装 配置国内pypi源 xff1a mkdir p config pip vim config pip pip conf global ind
  • Windows 远程桌面登录蓝屏、不显示桌面问题解决方法

    远程桌面登录蓝屏 不显示桌面问题解决方法 有时候的不当操作 xff0c 可以使Windows服务器或vps远程桌面出现蓝屏或者黑屏 xff01 遇到此问题 xff0c 不要急急忙忙的让机房值班给你重启机器 xff0c 因为此时除了远程连接不
  • 【5G核心网】5GC核心网之网元UPF

    UPF xff08 User Plane Function xff0c 用户面功能 xff09 xff1a ts 29 244 23 501 5 8 1 UPF User Plane Function 用户平面功能 用于RAT内 RAT间移
  • 玩转ADB命令(ADB命令使用大全)

    此文章内容整合自网络 xff0c 欢迎转载 我相信做Android开发的朋友都用过ADB命令 xff0c 但是也只是限于安装应用push文件和设备重启相关 xff0c 更深的就不知道了 xff0c 其实我们完全可以了解多一点 xff0c 有
  • Ubuntu12.04操作系统安装时,出现的问题及解决方案

    问题一 Windows 下用 putty 连接不上虚拟机上的 Ubuntu12 04 解决方案 预探索 问题可能的原因 A 先确定你能不能ping通远程的ubuntu或者虚拟机 B 如果还不能登录 xff0c 分析原因是大多数没有真正开启s
  • 获取镜像源来搭建本地Ubuntu14.04源

    针对公司的网络限制 xff0c 可以在局域网内搭建一台本地的ubuntu源 1 修改源配置 换成搜狐源 默认的ubuntu源不如某些国内的源速度快 vi etc apt source list deb http mirrors sohu c
  • Ubuntu Desktop 16 配置ssh远程登录

    文章目录 环境介绍1 安装openssh server2 允许用户登录 xff1b 编辑配置文件3 重启sshd服务并检查状态4 查看Ubuntu主机的IP5 远程登录Ubuntu6 退出远程登录参考文献英语好的同学请忽略 环境介绍 主机系
  • 关闭Linux防火墙

    文章目录 查看防火墙状态临时关闭防火墙禁止开机启动防火墙开启防火墙允许开机启动防火墙关闭防火墙的步骤 查看防火墙状态 CentOS 6 service iptables status CentOS 7 firewall cmd state
  • ubuntu挂载sd卡到分区目录+修改docker镜像存储位置

    ubuntu挂载sd卡到分区目录 43 修改docker镜像存储位置 一 挂载SD卡到 data 1 查看Linux硬盘信息 lsblk 或 fdisk l lsblk 新的硬盘 xff0c 最好删除之前的分区 xff0c 再新建分区 de
  • xRDP "Password failed, error - problem connecting"

    Add this in sesman ini under Xvnc solved my problem param8 61 SecurityTypes param9 61 None This solved my problum sudo n
  • 如何远程公司 上班族必选大集合

    老张是我们销售部的经理 xff0c 为人随和 xff0c 一点架子也没有 xff0c 和我们关系搞的都很好 xff0c 也很袒护我们 xff0c 由于疫情的原因 xff0c 不得已要居家办公了 xff0c 这让同事们都很不适应 xff0c
  • C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序 xff0c 直接选择排序 xff0c 冒泡排序 xff0c 最近考试要用到 xff0c 网上也有很多例子 xff0c 我觉得还是自己写的看得懂一些 简单交换法排序 1 简单交换法 排序 2 根据序列中两个记录
  • Centos7 防火墙开放端口,查看状态,查看开放端口

    CentOS7 端口的开放关闭查看都是用防火墙来控制的 xff0c 具体命令如下 xff1a 查看防火墙状态 xff1a xff08 active running 即是开启状态 xff09 root 64 WSS bin systemctl
  • C标准库源码解剖(13):输入输出函数stdio.h

    C标准中的I O库是一个比较庞大的库 xff0c 实现也比较复杂 显然I O库的实现是依赖于操作系统的 xff0c 不同的系统上I O库的实现机理是不一样的 glibc中 xff0c I O库的核心实现在libio目录下 有4个头文件lib
  • 开源的多媒体播放器MPV

    最近在网上找到了一个很好用的开源多媒体播放器MPV 它功能强大 免费开源 支持多平台的极简播放器 底层采用了 MPlayer mplayer2 和 FFmpeg 等开源项目 xff0c 支持多种音视频格式 高清视频 GPU 解码 自定义等功
  • 计算机自动更新变灰色,无法修改解决方法。

    第一种办法 xff1a 使用本地组策略配置自动更新 1 单击 开始 xff0c 然后单击 运行 2 键入 gpedit msc xff0c 然后单击确定 3 展开 计算机配置 4 右键单击 管理模板 xff0c 然后单击 添加 删除模板 5
  • vscode 安装go环境无法安装gopls等插件,响应超时、失去连接等问题的简单解决方案

    看错误提示就大概明白 xff0c 是国内无法连接到 golang org 尝试下载了镜像网站 github com golang 里面的 tools 也不靠谱 因为安装时总会缺少非常多的插件 xff0c 导致无法简单地执行 go insta
  • UIImageView的图片居中问题

    我们都知道在ios中 xff0c 每一个UIImageView都有他的frame大小 xff0c 但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢 xff1f 在默认情况 xff0c 图片会被压缩或者拉伸以填满整个区域 通过查
  • mysqld.exe 占了400M内存的问题

    最近遇到了服务器总是停机的问题 xff0c 虽然它自己只有2G的内存 xff0c 不过实际部署的应用访问量非常小 xff0c 也不至于2G就不够用 xff0c 所以开始了给服务器瘦身的计划 看着任务管理器里面的各个进程 xff0c 发现吃内

随机推荐