C高级(二)

目录

结构体

字节对齐

大端小端存储

堆区内存分配

结束


前面我们讲解了指针以及函数,本章则重点了解一下结构体以及相关的作业示例

  • 结构体

结构体:是一种构造函数类型,可以用于存储多个不同类型的数据,在内存中连续存放。

成员:一个结构体中的一个数据称作结构体的成员,一个结构体可以拥有多个成员。

例如:我们在日常生活中描述一个人,其有姓名、性别、身高、体重等

当我们使用C语言来定义时则需要多个不同类型的变量:

char name[20];

char sex[10];

int high;

int weigh;

这种情况我们就可以使用结构体去定义。

  1. 结构体的定义步骤:
  • 先定义结构体类型。
  • 通过该类型定义结构体变量。

struct 自定义结构体类型名 {

成员列表;

....

};

注意:成员定义  同变量定义 一致

 

图中便是结构体的基本定义,其类型为stuct people_a类型。

        2.通过类型定义结构体变量:

                        使用定义的结构体类型来定义结构体变量并初始化。

例如

        

 

相同类型的结构体变量可以直接赋值。

例如:

 

在结构体定义类型时,一般会进行结构体别名定义:

typedef关键字就是取别名。

 

在后续的结构体变量定义中我们可以直接使用别名,对结构体变量进行定义。

 

  • 结构体成员的访问:

            1. 结构体变量.成员名

 

          2.结构体指针:一个指针指向一个结构体首地址

                                结构体指针->成员名

 

结构体数组:

一个数组 其元素是 结构体

结构体指针数组:

一个数组其元素是结构体指针。

字节对齐

        1.自动字节对齐:编译器根据变量的类型选择对应的对齐方式

例如:int 4, short 2, char 1,应当以4字节对齐。

                #pragma pack ()   表示采用自动字节对齐。

        2.强制字节对齐:#pragma pack (2) 表示强制后续的结构体类型 均 以2字节对齐

大端小端存储

多字节数据: 在基本数据类型中 不能用1个字节存放的数据 都称作多字节数据
    short  int   float ;

大小端:表示字节序,由CPU构架决定的

        小端存储: 低地址 存储高位数据   例如:X86 架构CPU、家用电脑 PC。

        大端存储 :  低地址 存储低位数据    例如:ARM 架构CPU 、手机 、 网络字节序。

堆区内存分配

1.申请堆区内存:

        void *malloc(size_t size);

    参数返回值: size表示大小位字节。
     void * : 万能指针。
              可能的值:  NULL  内存申请失败 。
              其他值申请成功即堆区地址。

2.释放内存:

        void free(void *ptr);
                    ptr: 表示申请的堆区地址。

在释放内存的时候有可能会出现内存泄漏的问题。

内存泄漏:  丢失堆区指针, 无法free。

3.堆区内存使用情形:

            1) 开辟较大的内存空间。
            2) 使用周期较长变更较多,跨函数使用。

结束

        C语言就大致给大家讲到这里,由问题或者不对的地方可以私信给小编,小编及时改正,毕竟我也是在学习中。。。。。。事情较多,更新随缘,谢谢大家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. C 语言中的指针和内存泄漏 ............................................................................................................. 5 2. C语言难点分析整理 .......................................................................................................................... 9 3. C语言难点 ........................................................................................................................................ 16 4. C/C++实现冒泡排序算法 ................................................................................................................. 29 5. C++中指针和引用的区别 ................................................................................................................. 31 6. const char*, char const*, char*const的区别 ..................................................................................... 32 7. C中可变参数函数实现 .................................................................................................................... 34 8. C程序内存中组成部分 .................................................................................................................... 37 9. C编程拾粹 ........................................................................................................................................ 38 10. C语言中实现数组的动态增长 .................................................................................................... 40 11. C语言中的位运算 ........................................................................................................................ 41 12. 浮点数的存储格式: .................................................................................................................... 45 13. 位域 ................................................................................................................................................ 52 14. C语言函数维数组传递方法 .................................................................................................... 58 15. C语言复杂表达式的执行步骤 .................................................................................................... 60 16. C语言字符串函数大全 ................................................................................................................ 62 17. C语言宏定义技巧 ........................................................................................................................ 80 18. C语言实现动态数组 .................................................................................................................... 89 19. C语言笔试-运算符和表达式 ....................................................................................................... 93 20. C语言编程准则之稳定篇 ............................................................................................................ 96 21. C语言编程常见问题分析 ............................................................................................................ 97 22. C语言编程易犯毛病集合 .......................................................................................................... 101 23. C语言缺陷与陷阱(笔记) ............................................................................................................ 107 24. C语言防止缓冲区溢出方法 .......................................................................................................113 25. C语言高效编程秘籍 ...................................................................................................................115 26. C运算符优先级口诀 ...................................................................................................................119 27. do/while(0)的妙用 ....................................................................................................................... 120 28. exit()和return()的区别 ................................................................................................................ 125 29. exit子程序终止函数与return的差别 ........................................................................................ 126 30. extern与static存储空间矛盾 ..................................................................................................... 130 31. PC-Lint与C\C++代码质量 ........................................................................................................ 132 32. spirntf函数使用大全................................................................................................................... 142 33. 叉树的数据结构 ...................................................................................................................... 150 34. 位运算应用口诀和实例 .............................................................................................................. 153 35. 内存对齐与ANSI C中struct内存布局 .................................................................................... 156 36. 冒泡和选择排序实现 .................................................................................................................. 162 37. 函数指针数组与返回数组指针的函数 ...................................................................................... 168 38. 右左法则- 复杂指针解析 ........................................................................................................... 170 39. 回车和换行的区别 ...................................................................................................................... 173 40. 堆和堆栈的区别 .......................................................................................................................... 175 41. 堆和堆栈的区别 .......................................................................................................................... 178 42. 如何写出专业的C头文件 ......................................................................................................... 181 43. 打造最快的Hash表 .................................................................................................................... 185 44. 指针与数组学习笔记 .................................................................................................................. 199 45. 数组不是指针 .............................................................................................................................. 201 46. 标准C中字符串分割的方法 ..................................................................................................... 205 47. 汉诺塔源码 .................................................................................................................................. 208 48. 洗牌算法 .......................................................................................................................................211 49. 深入理解C语言指针的奥秘 ..................................................................................................... 213 50. 游戏外挂的编写原理 .................................................................................................................. 229 51. 程序实例分析-为什么会陷入死循环 ......................................................................................... 232 52. 空指针究竟指向了内存的哪个地方 .......................................................................................... 234 53. 算术表达式的计算 ...................................................................................................................... 238 54. 结构体对齐的具体含义 .............................................................................................................. 242 55. 连连看AI算法 ............................................................................................................................ 246 56. 连连看寻路算法的思路 .............................................................................................................. 254 57. 重新认识:指向函数的指针 ......................................................................................................... 258 58. 链表的源码 .................................................................................................................................. 261 59. 高质量的子程序 .......................................................................................................................... 264 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解.................................................... 266 61. C语言常见错误 .......................................................................................................................... 286 62. 超强的指针学习笔记 .................................................................................................................. 291 63. 程序员之路──关于代码风格 .................................................................................................. 306 64. 指针、结构体、联合体的安全规范 .......................................................................................... 309 65. C指针讲解 .................................................................................................................................. 314 66. 关于指向指针的指针 .................................................................................................................. 327 67. C/C++ 误区一:void main() ...................................................................................................... 331 68. C/C++ 误区:fflush(stdin) ..................................................................................................... 334 69. C/C++ 误区三:强制转换 malloc() 的返回值 ........................................................................ 338 70. C/C++ 误区四:char c = getchar(); ............................................................................................ 339 71. C/C++ 误区五:检查 new 的返回值....................................................................................... 341 72. C 是 C++ 的子集吗? .............................................................................................................. 342 73. C和C++的区别是什么? .......................................................................................................... 345 74. 无条件循环 .................................................................................................................................. 346 75. 产生随机数的方法 ...................................................................................................................... 347 76. 顺序表及其操作 .......................................................................................................................... 348 77. 单链表的实现及其操作 .............................................................................................................. 349 78. 双向链表 ...................................................................................................................................... 353 79. 程序员数据结构笔记 .................................................................................................................. 357 80. Hashtable和HashMap的区别.................................................................................................... 364 81. hash 表学习笔记 ......................................................................................................................... 366 82. C程序设计常用算法源代码 ...................................................................................................... 368 83. C语言有头结点链表的经典实现 .............................................................................................. 375 84. C语言惠通面试题 ...................................................................................................................... 383 85. C语言常用宏定义 ...................................................................................................................... 402
考试大纲 1 基本要求 1.熟悉Visual C++集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格。 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在Visual C++集成环境下,能够编写简单的C 程序,并具有基本的纠错和调试程序的能力。 2 考试内容 一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。 、数据类型及其运算 1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。 2.C运算符的种类、运算优先级和结合性。 3.不同类型数据间的转换与运算。 4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。  三、基本语句 1.表达式语句,空语句,复合语句。 2.输入输出函数的调用,正确输入数据并正确设计输出格式。 四、选择结构程序设计 1.用if语句实现选择结构。 2.用switch语句实现多分支选择结构。 3.选择结构的嵌套。 五、循环结构程序设计 1.for循环结构。 2.while和do-while循环结构。 3.continue语句和break语句。 4.循环的嵌套。 六、数组的定义和引用 1.一维数组和维数组的定义、初始化和数组元素的引用。 2.字符串与字符数组。 七、函数 1.库函数的正确调用。 2.函数的定义方法。 3.函数的类型和返回值。 4.形式参数与实际参数,参数值的传递。 5.函数的正确调用,嵌套调用,递归调用。 6.局部变量和全局变量。 7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。 八、编译预处理 1.宏定义和调用(不带参数的宏,带参数的宏)。 2.“文件包含”处理。 九、指针 1.地址与指针变量的概念,地址运算符与间址运算符。 2.一维、维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的 定义。通过指针引用以上各类型数据。 3.用指针作函数参数。 4.返回地址值的函数。 5.指针数组,指向指针的指针。 十、结构体(即“结构”)与共同体(即“联合”) 1.用typeof说明一个新类型。 2.结构体和共用体类型数据的定义和成员的引用。 3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。 十一、位运算 1.位运算符的含义和使用。 2.简单的位运算。 十、文件操作 只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。 1.文件类型指针(FILE类型指针)。 2.文件的打开与关闭(fopen,fclose)。 3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。 3 考试方式 上机考试,考试时长120分钟,满分100分。 1.题型及分值 单项选择题40分(含公共基础知识部分10分)。 操作题60分(包括程序填空题、程序修改题及程序设计题)。 2.考试环境 操作系统:中文版Windows 7。 开发环境:Microsoft Visual C++ 2010学习版。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值