`
Ydoing
  • 浏览: 106080 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C语言结构体必知必会

 
阅读更多

结构体

结构体是一种特殊类型,可以打包其它类型为一种复合类型。在面向对象的概念中,就是一种特殊类。

使用结构体几种形式:

第一种

先定义结构体,然后定义结构体变量。

定义结构体:


struct point1{

    int x;

    int y;

};

定义结构体变量

struct point1 point;

第二种

定义匿名结构体,然后定义结构体变量


struct{

    int x;

    int y;

}point2;

第三种

定义结构体的同时定义结构体变量


struct point3{

    int x;

    int y;

}point;

第四种

用typedef定义结构体


typedef struct point4{

    int x;

    int y;

}t_point;

然后用t_point定义结构体变量

t_point point;

结构体数组


    struct student{

        int age;

        char *name;

    };

    struct student ss[10];

结构体指针


    struct student *pst;

    pst = &foo;

结构体初始化

有结构体定义


    struct student{

        int age;

        char *name;

    };

第一种


    struct student foo1 = {11, "xiaoming"};
    struct student foo2 = {11}

第二种


    struct student foo3 = {.age = 11};

第三种

    struct student foo4 = (struct student){11, "xiaoming"};

    struct student foo5 = (struct student){.age = 11};

结构体数组初始化


    struct student ss1[10] = {0};

    struct student ss2[10] = {{}, {}, {}};

    struct student ss3[10] = {[2] = {}, [3] = {}};

    struct student ss4[10] = {[2].age = 10, [3].name = "xiaoming"};

访问结构体成员

使用“.”返回结构体成员


    struct student foo = {11, "xiaoming"};

    int age = foo.age;

    char *name = foo.name;

    printf("age is %d, name is %s\n", age, name);



    foo.age = 20;

    foo.name = "liyong";



    printf("age is %d, name is %s\n", foo.age, foo.name);

当使用结构体指针的时候可以用箭头操作符”->”


    struct student *pst;

    pst = &foo;

    printf("pst age is: %d and name is %s\n", (*pst).age, (*pst).name);

    printf("pst age is: %d and name is %s\n", pst->age, pst->name);
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    C语言结构体对齐.pdf

    C 语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容 虽然很基础,但一不小心就会弄错。写出一个 struct,然后 sizeof,你会不会经 常对结果感到奇怪? sizeof的结果往往都比你声明的变量总长度要...

    iOS开发分分钟搞定C语言?结构体和枚举

    在iOS开发中,掌握C语言的基本知识是必不可少的,尤其是结构体和枚举。本文将深入探讨这两个概念。 首先,我们来谈谈结构体。结构体是C语言中一种非常重要的构造类型,它允许我们将不同类型的数据封装在一起,形成...

    C语言权威教程C语言学习必备

    结构体和联合体是C语言中复合数据类型的一部分,K&R教程会介绍如何定义和使用它们,以及如何通过指针操作结构体成员。这在处理复杂数据结构时非常有用,比如链表、树、图等。 书中还涵盖了错误处理和输入/输出操作...

    大学生《C语言》期末必刷题库(含答案).pdf

    - C语言中的表达式必须符合语法规则,否则编译器会报错。 - 循环语句如for和while需要正确的初始化、条件判断和迭代更新部分。 - 在C语言中,表达式中一旦出现逻辑运算符如`&&`,其后的条件只有在前一个条件为真时才...

    非常好的C语言巩固学习资料,对于提升C语言能力很有帮助,尤其详细介绍了C指针,结构体等重点

    总的来说,这个“C语言巩固学习资料”将为你提供一个全面而深入的学习平台,通过系统性的学习和实践,你的C语言水平将会显著提高。无论你是初学者还是有一定经验的开发者,都能从中受益,进一步巩固C语言基础知识,...

    C语言入门必学全集ppt课件.ppt

    本课件“C语言入门必学全集ppt”旨在帮助初学者系统地学习C语言,通过详细的讲解和实例,逐步建立对C语言的全面认识。 首先,C语言的起源和发展历史是理解其特性和应用背景的关键。C语言起源于20世纪70年代的贝尔...

    C语言中结构体(struct)的几种初始化方法

    初始化结构体是编程过程中必不可少的步骤,确保结构体的成员变量被赋予了正确的初始值。这里我们将详细探讨三种常见的结构体初始化方法。 1. 顺序初始化 这是最基础的初始化方式,要求按照结构体成员的定义顺序,...

    C语言学习必备合集.rar

    这部分很可能是对C语言的全面教程,涵盖了基本语法、数据类型、控制结构(如if语句、switch语句、循环)、函数、指针、数组、结构体、枚举等核心概念。学习者应通过此部分掌握如何声明变量、编写函数、理解和使用...

    结构体偏移.docx

    在处理结构体偏移时,了解编译器的对齐策略和C语言的内存模型是必不可少的。对于Linux内核这样的高性能系统,对结构体的精心设计和优化可以显著提升性能。同时,理解结构体偏移也有助于深入理解C语言中的指针和内存...

    大学生C语言学习必备---期末复习利器(不挂科)

    其次,"知识点"这部分可能列出了C语言中的核心概念和语法,包括但不限于变量、数据类型、运算符、控制结构(如if语句、switch语句、循环)、函数、数组、指针、结构体、文件操作等。这些知识点是C语言学习的基础,也...

    结构体排序

    当需要对含有结构体的数组进行排序时,我们通常会基于结构体中的某个或某些特定成员变量来进行比较和排序。排序算法的选择取决于具体需求和数据规模,常见的有冒泡排序、选择排序、插入排序等,而对于大规模数据,更...

    c语言基础必备

    本文档基于《C和指针》一书,对C语言的基础知识点进行整理,包括声明和定义、数据类型、指针、函数、数组、字符串、结构体、链表等基本概念。 声明和定义是C语言中最基本的概念之一。声明是告诉编译器关于变量、...

    初学C语言必备资料,包含各种资源

    《C语言教程.exe》可能是以电子书或交互式学习软件的形式提供,它通常会按照C语言的基础语法、变量、运算符、控制结构(如if语句、for循环和while循环)、数组、指针、函数、结构体等逐步展开教学。初学者可以通过这...

    C语言经典程序100题(完整版).zip_C语言刷题程序_C语言经典100题_blankete3l_c语言编程刷题_free94

    这个压缩包包含了一个名为"C语言经典程序100题(完整版).doc"的文档,里面详细列出了100个经典的C语言编程题目,涵盖了C语言的基础知识、控制结构、函数、数组、指针、结构体等各个核心部分。 1. **基础语法**:这些...

    c语言经典源代码(C语言学习者必看)

    4. **数据结构**:C语言支持数组、结构体、链表等多种数据结构。经典源码可能包含对这些数据结构的操作,如动态内存分配、排序算法等。 5. **文件操作**:C语言提供了低级别的文件I/O接口,学习如何读写文件是必备...

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

    C语言中的错误处理和调试技巧也是必不可少的知识。学会使用printf进行输出调试,以及如何处理运行时错误,将帮助你在遇到问题时迅速找到解决方案。 文件操作是许多应用程序的核心,掌握fopen、fclose、fread、...

    学习C语言必会的7组代码基础代码学习.rar

    这个压缩包“学习C语言必会的7组代码基础代码学习.rar”显然是一个专门为初学者设计的学习资源,旨在帮助他们掌握C语言的基础。以下是这7组基础代码可能涉及的知识点,以及它们在C语言学习中的重要性。 1. **数据...

    C必知必会C必知必会C必知必会C必知必会

    "C必知必会"意味着理解和掌握C语言的关键概念和技术是至关重要的。本篇将详细阐述C语言中的核心知识点,帮助你深入理解这一强大的编程语言。 1. **基础语法**:C语言的语法简洁明了,包括变量声明、数据类型(如int...

    C语言入门必做的exercises及相关源代码参考。

    4. **结构体与联合**:`PROG11_3.C`可能涉及C语言中的结构体或联合,这是组合多个不同类型数据的方式,常用于数据结构的设计,如链表、树等。 5. **文件操作**:在C语言中,`PROG12_1.C`可能涉及到文件的读写操作,...

Global site tag (gtag.js) - Google Analytics