#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();
}
分享到:
相关推荐
接下来,我们将深入探讨二叉树的定义、初始化方法、不同类型的遍历方式以及如何计算二叉树的深度和叶子节点的数量。 ### 二叉树的基本概念 二叉树是一种树形结构,每个节点最多有两个子节点,通常称这两个子节点为...
报告中详细介绍了几种典型的数据结构实现方法,包括基于顺序存储结构和链式存储结构的线性表实现、基于二叉链表的二叉树实现以及基于邻接表的图实现。 #### 基于链式存储结构的线性表实现 ##### 问题描述 本次...
在该实现中,主要定义了以下几种数据结构: 1. **边节点(EdgeNode)**: ```c typedef struct enode { int adjvertex; // 邻接顶点的位置 EdgeType info; // 边的信息 struct enode *next; // 指向下一个边...
以上只是关于如何使用C语言实现几种常见数据结构的简要介绍。实际上,每种数据结构都有其独特的应用场景和实现细节。对于初学者来说,观看高质量的教学视频是非常有帮助的,它们不仅可以帮助理解理论知识,还能提供...
这里需要注意的是,代码中使用`cout`和`cin`来进行输入输出操作,这些操作主要用于调试或测试目的,在实际应用中可能需要通过其他方式读取数据。 ### 构建霍夫曼树 构建霍夫曼树的过程主要由以下几个步骤组成: 1...
2. **初始化与销毁**:为了使用静态数组,我们需要提供初始化和销毁功能。初始化函数会分配内存并设置初始值,如所有元素为0;销毁函数则负责释放分配的内存。例如: ```c StaticList* createList(int capacity) { ...
有几种方法可以定义结构体变量: 1. 先声明结构体类型,再定义变量: ```c struct Student student1, student2; ``` 然后可以分别初始化这些变量,例如: ```c student1.num = 10001; strcpy(student1.name, "Zhang...
这两种初始化方式的区别在于: - `char a[]="string literal";`创建了一个字符数组,并将其初始化为字符串字面量。 - `char *p="string literal";`定义了一个指向字符串字面量的字符指针。 当试图修改通过`char *p=...
抽象数据类型(Abstract Data Type,ADT)是计算机科学中的一种概念,它为数据结构和在这些结构上操作的方法提供了一种形式化的定义。ADT是独立于具体实现和编程语言的,它只关注数据的逻辑结构以及可以对其进行的...
为此,设计了一个数据模型,使用了`typedef struct`定义了一个名为`MGraph`的存储结构,它包含顶点数组`vexs`、邻接矩阵`arcs`以及顶点数量`vexnum`。邻接矩阵用于存储每个顶点间距离的权值。 核心算法是Floyd算法...
下面将对数据结构的基本概念、重要性以及常见的数据结构类型进行详细的介绍,并概述几种典型的数据结构及其算法实现。 ### 数据结构的重要性 数据结构是计算机科学中的一个核心概念,它涉及如何在计算机中组织和...
线性表的链式存储结构是相对于顺序存储结构而言的一种实现方式,它具有灵活的内存分配和数据操作特性。 链式存储结构中的线性表通常采用单链表的形式。单链表由一系列节点组成,每个节点包含两部分:数据域,用于...
以下是几种常见的表示方法: 1. 邻接矩阵:使用二维数组,如果存在从顶点i到顶点j的边,那么数组[i][j]的值为1,否则为0。对于无权图,通常只用0和1表示是否存在边;对于有权图,数组[i][j]存储边的权重。 2. 邻接...