C语言知识之结构体及实用调试技巧(一)

简介: C语言知识之结构体及实用调试技巧

一.结构体

定义:

一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量

1.结构体(结构)的声明

struct  Book(结构体名称)
{
    Member-list(成员列表)
}variable-list(变量列表);

1.1结构体的作用:

之前笔记中的类型都是内置型:

char short int ……

所以就有结构体来描述复杂对象

结构体可以是任何类型

1.2结构体变量的创建

1.2.1

struct (结构体名称) (变量名)

struct Stu s1

1.2.2

在1中的变量列表处直接创建变量s1、s2……

注意:此处的变量是全局变量

struct Stu
{
   Member-list
} s1, s2;
1.2.3

使用typedef,就能简写struct成自定义的类型名,如Stu

typedef struct Stu
{
   //Member - list
}Stu;//Stu 是重命名产生的新的类型
int main()
{
  Stu s1,s2;
  return 0;
}

1.3结构体变量的初始化

使用{}进行赋值,有两种方式,如:

struct B
{
  char c;
  int i;
};
struct S
{
  char c;
  int num;
  int arr[10];
  double* pd;
  struct B sb;
  struct B* pb;
}s1;//s1是全局变量
struct S s2;//s2是全局变量
int main()
{
  double d = 3.14;
  //按照顺序初始化
  struct S s3 = { 'q', 100, {1,2,3}, &d, {'a', 99}, NULL };
  //指定成员来初始化
  struct S s4 = { .num = 1000, .arr = {1,2,3,4,5} };
  return 0;
}

2.结构体成员的访问

分为两种

结构体变量.成员名

结构体指针->成员名

3.结构体变量的传参

推荐传址调用:

a 传址调用能实现的作用比传值调用更大。

b 节省占用栈区空间的大小,行能更高。

二实用调试技巧

1.bug

指飞蛾

事件链接:

点击此处跳转

有兴趣的可以了解一下

由此,飞蛾(bug)就引申为计算机程序的错误

2.调试

2.1定义

寻找错误并解决的过程就是调试

2.2步骤

2.3debug和release

debug:

debug(调试)版本:

不进行优化,由于进行调试

release:

release(发布)版本:

自动进行优化,不能调试,给用户使用的版本

3.windows环境调试介绍

3.1环境准备

debug版本

3.2快捷方式

下面介绍五个最常用的快捷键。

提示:部分机器需要加上Fn键。

补充:

F11更细致:能进入函数内部,并逐条执行其中的语句。

F9创建断点

F5跳过断点前的代码,便于调试

F5还可以使用条件断点,更快捷

如图:

提示:

当循环中存在断点时,F5只会跳到下一次循环中的断点

相关文章
|
20天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
104 14
|
24天前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
109 10
|
28天前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
120 13
|
1月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
62 11
|
26天前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
42 1
|
27天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
45 2
|
1月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
57 4
|
2月前
|
存储 C语言
如何在 C 语言中实现结构体的深拷贝
在C语言中实现结构体的深拷贝,需要手动分配内存并逐个复制成员变量,确保新结构体与原结构体完全独立,避免浅拷贝导致的数据共享问题。具体方法包括使用 `malloc` 分配内存和 `memcpy` 或手动赋值。
80 10
|
2月前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。