typedef定义结构体--声明结构体变量--指向该类型的指针

// 结构体指针.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
//#define _CRT_SECURE_NO_WARNINGS
//在C或C++程序中,#define _CRT_SECURE_NO_WARNINGS 是一个预处理指令,
//用于在编译时禁止特定的安全警告。这些警告通常与使用了被视为不安全的函数有关,如 strcpy、strcat 和 sprintf 等。
//这些函数可能会导致缓冲区溢出,因为它们不会检查目标缓冲区的大小。
//当你编译程序并且使用了这些不安全的函数时,编译器可能会显示警告,告诉你这些函数的使用可能是不安全的,并建议你使用更安全的版本,
//如 strcpy_s、strcat_s 和 sprintf_s。然而,如果你确定你的代码是安全的,或者你有特殊的原因需要使用这些不安全的函数,
//你可以通过在程序的开头定义 _CRT_SECURE_NO_WARNINGS 来禁止这些警告。

#include <iostream>
#include<string.h>


int main()
{

    typedef struct Student {        //Student可省略
        char name[50];
        int age;
        float score;
    } StudentTypeDef;
    // 使用新类型名来声明一个变量  
    StudentTypeDef student1;

    // 设置变量的值  
    strcpy(student1.name, "Alice");
    student1.age = 20;
    student1.score = 90.5f;

    // 使用新类型名来声明一个指针,并初始化它指向student1  
    StudentTypeDef* ptr = &student1;

    // 使用指针访问和打印变量的值  
    printf("Name: %s\n", ptr->name);
    printf("Age: %d\n", ptr->age);
    printf("Score: %.2f\n", ptr->score);

    return 0;
    std::cout << "Hello World!\n";
}

运行:

-----------------------------------------

在STM32程序(keil)中应用解析:

typedef来定义一个新的结构体类型

1---使用新类型名来声明一个变量  

2---设置变量的值  

3---(配置时钟系统)函数传参,需要的参数为:RCC_ClkInitTypeDef结构体的指针RCC_ClkInitStruct,(传参后)指向RCC_ClkInitStructure

(函数原型:HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t FLatency))

使用指针(RCC_ClkInitStruct)访问变量(RCC_ClkInitStructure)的值   :

 ---------------------------------------------另一个例子----------------------

1.定义一个名为 CanTxMsg 的结构体类型

typedef struct  
{  
  uint32_t StdId;  /*!< Standard Identifier */  
  uint32_t ExtId;  /*!< Extended Identifier */  
  uint8_t IDE;      /*!< Identifier Type (Standard or Extended) */  
  uint8_t RTR;      /*!< Remote Transmission Request */  
  uint8_t DLC;      /*!< Data Length Code */  
  uint8_t Data[8];  /*!< Data to be transmitted */  
} CanTxMsg;

2.成员设置

CanTxMsg TxMessage;  
TxMessage.RTR = 0; // 正确设置TxMessage的RTR成员为0  
// ... 其他TxMessage成员的设置 ...

3.使用 -> 运算符来访问其成员

CanTxMsg *pTxMessage = &TxMessage; // pTxMessage是指向TxMessage的指针  
pTxMessage->RTR = 1; // 通过指针设置RTR成员为1

keil程序截图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值