结构体变量的定义以及与结构体变量调用的两种方式

简介: 结构体变量的定义以及与结构体变量调用的两种方式

1.结构体变量的定义以及与结构体变量调用的两种方式

#include <stdio.h>
结构体变量的定义(3种)
直接定义
struct stu
{
  char name[20];
  int age;
  int height;
};
struct stu stu1;
直接初始化定义
struct stu
{
  char name[20];
  int age;
  int height;
};
struct stu stu1 = {"Tom",18,180};
使用typedefine定义(注意格式)
typedef struct
{
  char name[20];
  int age;
  int height;
} person;//一般把这个名字放到最后面
person person2;//此时person2就是一个结构体变量
结构体变量的引用是通过.操作符;
打印指针变量的地址
#include <stdio.h>
int main()
{
  int a = 20;
  int* p = &a;
  printf("%p\n", p);//以十六进制打印
  char ch = 'a';
  char* c1 = &ch;
  printf("%p\n", c1);
  double a2 = 3.14;
  double* p2 = &a2;
  printf("%p\n", p2);
  return 0;
}
*解引用操作符用法
#include <stdio.h>
int main()
{
  int a = 10;
  int* p = &a;
  *p = 20;
  printf("%d", a);//输出20
  return 0;
}
求指针变量的大小   sizeof(指针变量名)
#include <stdio.h>
int main()
{
  int a = 10;
  int* p1 = &a;
  printf("%zd\n", sizeof(p1));//64位机器指针变量大小为8字节,32位是4字节
  char ch = 'c';
  char* c1 = &ch;
  printf("%zd\n", sizeof(c1));
  return 0;
}
两种调用指针变量的方式
#include <stdio.h>
struct Stu//定义结构体变量(未初始化)
{
  char name[20];
  int age;
  float score;
};
void print1(struct Stu t)
{
  printf("%s %d %f", t.name, t.age, t.score);
}
void print2(struct Stu* t)
{
  printf("%s %d %f", (*t).name, (*t).age, (*t).score);
}
void print3(struct Stu* t)
{
  printf("%s %d %f", t->name, t->age, t->score);
}
int main()
{
  struct Stu t = { "mike",20,59.9};
  print1(t);//第一种调用方式  结构体变量.成员名称
  printf("\n");
  print2(&t);
  printf("\n");
  print3(&t);
  return 0;
}


目录
相关文章
|
11月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
892 9
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】Linux 创建网络连接 nc命令 使用教程
【Shell 命令集合 网络通讯 】Linux 创建网络连接 nc命令 使用教程
535 1
|
机器学习/深度学习 算法 Python
【Python机器学习】神经网络中常用激活函数、损失函数、优化方法(图文解释 附源码)
【Python机器学习】神经网络中常用激活函数、损失函数、优化方法(图文解释 附源码)
570 0
|
算法 JavaScript 前端开发
开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM(三)
开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM
3779 1
开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM(三)
|
5月前
|
缓存 开发框架 .NET
一个功能丰富的 .NET 工具库 XiHan.Framework.Utils
XiHan.Framework.Utils 是一个功能全面的 .NET 工具库,包含字符串处理、集合扩展、加密解密、分布式 ID、文件操作、缓存、线程、国际化等模块。设计上注重高内聚、低耦合,适用于各类 .NET 应用开发。支持 AES 加密、树形结构转换、分页过滤、日志输出等功能,提供简单易用的 API。可通过 NuGet 快速安装,源码开放,采用 MIT 协议。
196 56
|
11月前
|
定位技术
域名前缀和后缀html,为什么域名前要加www前缀,www是什么意思?
为什么域名前要加www前缀?Michael F Liu号召大家把域名前面的www去掉,我深以为然。好域名都被瓜分光了,大家手里的域名都老长老长的,处理网域名[https://www.91chuli.com/](https://www.91chuli.com/)就有5个字母,前面再加上“www.”,多让直接访问者敲打5次键盘,何苦来呢?
13825 6
|
Unix 索引 Windows
硬链接和符号链接的不同点
【5月更文挑战第20天】硬链接和符号链接的不同点
858 1
|
12月前
|
传感器 数据采集 物联网
探索.NET nanoFramework:为嵌入式设备编程的新途径
探索.NET nanoFramework:为嵌入式设备编程的新途
436 7
|
数据采集 缓存 前端开发
http和https请求服务器的时候在请求头部分都带什么到服务器呢?
HTTP和HTTPS请求头基本结构相似,HTTPS多了一层SSL/TLS加密。常见请求头如Accept(指定内容类型)、Authorization(身份验证)、Cookie(会话跟踪)、User-Agent(标识用户代理)等。HTTPS特有的头包括Upgrade-Insecure-Requests(升级到HTTPS)、Strict-Transport-Security(强制使用HTTPS)、Sec-Fetch-*(安全策略)和X-Content-Type-Options、X-Frame-Options等(增强安全性)。实际应用中,请求头会根据需求和安全策略变化。
398 0