`

struct结构定义的几种方式,和初始化及typedef用法

阅读更多
#include <stdio.h>
/**
一般定义形式

*/
    struct student{
    char *name;
    int age;
    double score;
}
define1(){
    struct student stu;
    stu.name="hello";
    stu.age=20;
    printf("student name%s\n",stu.name);   //hello
    printf("student age %d\n",stu.age); //20
}
/**
    在定义时给出结构变量名
*/
struct people{
     char *username;
     int age;
}body;
define2(){
     body.username="flex";
     body.age="nihao";
     printf("people.name %s\n",body.username);//flex
     printf("people.age %s\n",body.age);     //age;

}
/**
    匿名结构,光给出结构变量名,没有给定结构名
*/
struct {
    int age;
}teacher,stu;
define3(){
    teacher.age=20;
    stu.age=30;
    printf("teacher.age %d \n stu.age %d \n",teacher.age,stu.age); //20 30
}
/**
 使用宏定义
*/
#define UT struct cat
UT{
     char * carName;
}
define4(){
    UT a;
    //cat st;    //不可以这样定义
    //ct.carName="my first cat";
    a.carName="my cat";
   // printf("my first car%s\n",ct.carName);
    printf("my cat%s  ",a.carName);// my cat
    

}
struct initMember{
    int st;
    int h;
}member={2,3},member1;

initDefine(){
    printf("\nmember init %d,",member.st);//2
    member1=member;
    printf("member1.st %d\n + member1.h %d\n",member1.st,member1.h);//2,3
}
struct sarray{
    int a,b;
}str[3],sarr[2]={
        {1,2},
        {3,8},
        };
structArray(){
    struct sarray sp[2];
    int i;
    sp[0].a=1;
    sp[1].a=2;
    sp[0].b=0;
    sp[1].b=4;

    for(i=0;i<2;i++){
        printf("sp %d 的a %d\n",i,sp[i].a);   //8
    }
    
    str[0].a=5;
    printf("array[0].a=%d",str[0].a);//5
    
    printf("\nsarr[1].b=%d\n",sarr[1].b);
}
struct structPoint{
    char c;
}sp={'a'};
structPoint(){
    /*
其访问的一般形式为:

    (*结构指针变量).成员名

   或为:

        结构指针变量->成员名*/


    struct structPoint *p=&sp;
    printf("结构指针的指向的值是%c\n",(*p).c);
    printf("结构指针访问值的第2种方式%c\n",p->c);
}

//typedef 是给类型起别名,那么还可以给struct起别名
typedef int Integer;
typedefsample(){
    Integer a=2;
    printf("typdef int a=%\d",a);
}
//typedef一个结构
typedef struct TestTypeDefStruct{
    char *p;
} DEFSTRUCT;
typedefStruct(){
    DEFSTRUCT ttds;
    ttds.p="typedef define a struct";
    printf("typedef 定义一个结构%s\n",ttds.p);
}



//typedef demo De;

/*
demo2(){
    De sp;
    sp.a=2;
}*/
int main(int args,char* arg0){
     //定义的4种方式
     define1();
     define2();
     define3();
     define4();
     initDefine();//结构变量的初始化
     structArray();//结构数组的定义
     structPoint();//指向结构变量的指针, struct 结构名 *结构指针变量名
     typedefsample();//typedef定义一个整形
     typedefStruct();
    // demo();

}

 

分享到:
评论

相关推荐

    二叉树的相关操作,定义,初始化,几种遍历以及求深度和叶子数

    接下来,我们将深入探讨二叉树的定义、初始化方法、不同类型的遍历方式以及如何计算二叉树的深度和叶子节点的数量。 ### 二叉树的基本概念 二叉树是一种树形结构,每个节点最多有两个子节点,通常称这两个子节点为...

    华科计院数据结构报告-2

    报告中详细介绍了几种典型的数据结构实现方法,包括基于顺序存储结构和链式存储结构的线性表实现、基于二叉链表的二叉树实现以及基于邻接表的图实现。 #### 基于链式存储结构的线性表实现 ##### 问题描述 本次...

    数据结构图代码完整版的 C语言实现

    在该实现中,主要定义了以下几种数据结构: 1. **边节点(EdgeNode)**: ```c typedef struct enode { int adjvertex; // 邻接顶点的位置 EdgeType info; // 边的信息 struct enode *next; // 指向下一个边...

    c语言数据结构视频

    以上只是关于如何使用C语言实现几种常见数据结构的简要介绍。实际上,每种数据结构都有其独特的应用场景和实现细节。对于初学者来说,观看高质量的教学视频是非常有帮助的,它们不仅可以帮助理解理论知识,还能提供...

    数据结构—huffmancode

    这里需要注意的是,代码中使用`cout`和`cin`来进行输入输出操作,这些操作主要用于调试或测试目的,在实际应用中可能需要通过其他方式读取数据。 ### 构建霍夫曼树 构建霍夫曼树的过程主要由以下几个步骤组成: 1...

    数据结构实战 -- 线性结构静态数组表示法(C实现源码)

    2. **初始化与销毁**:为了使用静态数组,我们需要提供初始化和销毁功能。初始化函数会分配内存并设置初始值,如所有元素为0;销毁函数则负责释放分配的内存。例如: ```c StaticList* createList(int capacity) { ...

    程序逻辑与C语言:第9章 用户自己建立数据类型.ppt

    有几种方法可以定义结构体变量: 1. 先声明结构体类型,再定义变量: ```c struct Student student1, student2; ``` 然后可以分别初始化这些变量,例如: ```c student1.num = 10001; strcpy(student1.name, "Zhang...

    你必须知道的495个C语言问题

    这两种初始化方式的区别在于: - `char a[]="string literal";`创建了一个字符数组,并将其初始化为字符串字面量。 - `char *p="string literal";`定义了一个指向字符串字面量的字符指针。 当试图修改通过`char *p=...

    ADT_C语言ADT_

    抽象数据类型(Abstract Data Type,ADT)是计算机科学中的一种概念,它为数据结构和在这些结构上操作的方法提供了一种形式化的定义。ADT是独立于具体实现和编程语言的,它只关注数据的逻辑结构以及可以对其进行的...

    数据结构课设:超市选址问题

    为此,设计了一个数据模型,使用了`typedef struct`定义了一个名为`MGraph`的存储结构,它包含顶点数组`vexs`、邻接矩阵`arcs`以及顶点数量`vexnum`。邻接矩阵用于存储每个顶点间距离的权值。 核心算法是Floyd算法...

    《数据结构》算法实现及解析.高一凡编着

    下面将对数据结构的基本概念、重要性以及常见的数据结构类型进行详细的介绍,并概述几种典型的数据结构及其算法实现。 ### 数据结构的重要性 数据结构是计算机科学中的一个核心概念,它涉及如何在计算机中组织和...

    线性表链式存储结构及算法

    线性表的链式存储结构是相对于顺序存储结构而言的一种实现方式,它具有灵活的内存分配和数据操作特性。 链式存储结构中的线性表通常采用单链表的形式。单链表由一系列节点组成,每个节点包含两部分:数据域,用于...

    数据结构(图的建立)——C语言

    以下是几种常见的表示方法: 1. 邻接矩阵:使用二维数组,如果存在从顶点i到顶点j的边,那么数组[i][j]的值为1,否则为0。对于无权图,通常只用0和1表示是否存在边;对于有权图,数组[i][j]存储边的权重。 2. 邻接...

Global site tag (gtag.js) - Google Analytics