结构体总结(一)

简介: 结构体总结

1.普通结构体

struct   name(结构体名){

       结构体成员

};

#include <stdio.h>
struct node
{
    int a;
    char *b;
};
int main(int argc, char const *argv[])
{
    struct node n;
    n.b="abcdefg";
    n.a=100;
    printf("%s\n%d\n",n.b,n.a);
    return 0;
}

2.定义结构体并同时建立变量

struct   name(结构体名){

       结构体成员

}实例变量;

#include <stdio.h>
struct node
{
    int a;
    char *b;
}n,nn;
int main(int argc, char const *argv[])
{
    n.b="abcdefg";
    n.a=100;
    printf("%s\n%d\n",n.b,n.a);
    return 0;
}

3.匿名结构体

struct{

       结构体成员

}实例变量;

#include <stdio.h>
struct
{
    int a;
    char *b;
}n,nn;
int main(int argc, char const *argv[])
{
    n.b="abcdefg";
    n.a=100;
    printf("%s\n%d\n",n.b,n.a);
    return 0;
}

4.typedef重命名

typedef  struct   name1结构体名){

       结构体成员

}name2(重新定义的名字);

name2=struct name1

#include <stdio.h>
typedef struct node
{
    int a;
    char *b;
}node;
int main(int argc, char const *argv[])
{
    node n;
    n.b="abcdefg";
    n.a=100;
    printf("%s\n%d\n",n.b,n.a);
    return 0;
}

5.typedef省略结构体名字

typedef  struct {

       结构体成员

}name2(重新定义的名字);

#include <stdio.h>
typedef struct
{
    int a;
    char *b;
}node;
int main(int argc, char const *argv[])
{
    node n;
    n.b="abcdefg";
    n.a=100;
    printf("%s\n%d\n",n.b,n.a);
    return 0;
}

6.结构体数组

和创建普通数组一样创建结构体数组即可

#include <stdio.h>
typedef struct node
{
    int a;
    char *b;
}node;
int main(int argc, char const *argv[])
{
    node n[10];
    for(int i=0;i<10;i++){
        n[i].a=i*i;
        n[i].b="zbcdef";
    }
     for(int i=0;i<10;i++){
        printf("%d\t%s\n",n[i].a,n[i].b);
    }
    return 0;
}

7.结构体指针

extern void *malloc(unsigned int num_bytes);

首先定义一个结构体指针,但此时只是分配了一个地址,结构体成员变量并没有分配空间,因此使用malloc函数动态分配地址, 返回值是一个void*,因此要强转成你要的类型指针。

结构体成员变量赋值:

假如n是一个结构体指针,*n就是这个实际结构体,  (*n).成员名   就可以给结构体成员赋值或者更改,此外C语言为了简便,单独规定了结构体指针的定义方式  n->成员名。两种都是可以的;

#include <stdio.h>
typedef struct
{
    int a;
    char*  b;
}node;
int main(int argc, char const *argv[])
{
    node *n=(node*)malloc(sizeof(node));
    (*n).b="abcdefg";
    (*n).a=100;
    printf("%s\n%d\n",(*n).b,(*n).a);
    return 0;
}
#include <stdio.h>
typedef struct
{
    int a;
    char*  b;
}node;
int main(int argc, char const *argv[])
{
    node *n=(node*)malloc(sizeof(node));
    n->b="abcdefg";
    n->a=100;
    printf("%s\n%d\n",n->b,n->a);
    return 0;
}


相关文章
|
3月前
|
存储 算法 数据安全/隐私保护
结构体
结构体
37 1
|
2月前
|
编译器 Linux C语言
浅谈结构体
浅谈结构体
22 1
|
2月前
初识结构体
初识结构体
29 5
|
3月前
|
存储 算法 C语言
c结构体
c结构体
27 1
|
3月前
|
存储 安全 编译器
一篇文章介绍结构体
一篇文章介绍结构体
40 1
|
3月前
|
算法 C语言
结构体相关知识
结构体相关知识
|
9月前
|
机器学习/深度学习 存储 编译器
Day_16 结构体
Day_16 结构体
|
12月前
|
编译器 C++
C#视频-结构体
C#视频-结构体
49 0
|
存储 C++