• C语言结构体类型的typedef和结构体变量的初始化和函数传递地址传递和结构体变量的相关操作


    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <time.h>
    #include <pthread.h>
    #include <semaphore.h>
    #include <unistd.h>
    #include <signal.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct asoc_simple_dai {   //只是一个框架  不会分配空间
    	const char *name;  // 数据类型 +属性名
    	unsigned int sysclk;
    	int slots;
    	int slot_width;
    	unsigned int tx_slot_mask;
    	unsigned int rx_slot_mask;
    };
    
    // typedef 类型名  xxx;
    typedef struct asoc_simple_dai  asoc_simple_dai_T;
    asoc_simple_dai_T my_asoc_dai;// 变量的定义和初始化
    
    
    //地址传递
    static void  get_asoc_name(asoc_simple_dai_T* asoc_simple_dai111)
    {
        if(asoc_simple_dai111 == NULL)
        {
            return ;
        }
        printf("asoc_simple_dai111 %s
    ",asoc_simple_dai111->name);
    }
    
    // 地址传递
    static void  set_asoc_param(asoc_simple_dai_T* asoc_simple_dai111)
    {
        if(asoc_simple_dai111 == NULL)
        {
            return ;
        }
        asoc_simple_dai111->rx_slot_mask = 0xff;
        asoc_simple_dai111->tx_slot_mask = 0xff;
    }
    
    // 值传递   耗内存 //
    static void  set_asoc_param_value(asoc_simple_dai_T  asoc_simple_dai111)
    {
        asoc_simple_dai111.tx_slot_mask = 0x01;
        asoc_simple_dai111.rx_slot_mask = 0x03;
    }
    
    int main()
    {
    
        printf("%d
    ",sizeof(my_asoc_dai));
       // strcpy(my_asoc_dai.name,"I2S"); // 变量的操作
       // printf("my_asoc_dai.name is %s
    ",my_asoc_dai.name);
        my_asoc_dai.name = "I2S";  //
        printf("my_asoc_dai.name is %s
    ",my_asoc_dai.name);
        my_asoc_dai.rx_slot_mask = 0x01;
        my_asoc_dai.tx_slot_mask = 0x02;
        my_asoc_dai.slots = 1;
        my_asoc_dai.slot_width = 0x01;
        get_asoc_name(&my_asoc_dai);
        set_asoc_param(&my_asoc_dai);
        printf("my_asoc_dai.tx_slot_mask is %d
    ",my_asoc_dai.tx_slot_mask);
        printf("my_amy_asoc_dai.rx_slot_mask is %d
    ",my_asoc_dai.rx_slot_mask);
        set_asoc_param_value(my_asoc_dai);//值传递的坑
        printf("my_asoc_dai.tx_slot_mask 22222is %d
    ",my_asoc_dai.tx_slot_mask);
        printf("my_amy_asoc_dai.rx_slot_mask 2222is %d
    ",my_asoc_dai.rx_slot_mask);
    
        for(;;);
        return 0;
    }
    

      

    一勤天下无难事。
  • 相关阅读:
    Remoting系列(一)Remoting的基本概念
    软件设计师
    如果让我重做一次研究生
    VS2005Web控件拖动
    JS实现文本框回车提交
    SqlDataReader
    SqlCommand.ExecuteScalar
    DataSet
    电子商务部应该做些什么?【转】
    e
  • 原文地址:https://www.cnblogs.com/nowroot/p/13703584.html
Copyright © 2020-2023  润新知