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只会跳到下一次循环中的断点

相关文章
|
23天前
|
存储 C语言
如何在 C 语言中实现结构体的深拷贝
在C语言中实现结构体的深拷贝,需要手动分配内存并逐个复制成员变量,确保新结构体与原结构体完全独立,避免浅拷贝导致的数据共享问题。具体方法包括使用 `malloc` 分配内存和 `memcpy` 或手动赋值。
30 10
|
23天前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。
|
27天前
|
编译器 C语言
共用体和结构体在 C 语言中的优先级是怎样的
在C语言中,共用体(union)和结构体(struct)的优先级相同,它们都是用户自定义的数据类型,用于组合不同类型的数据。但是,共用体中的所有成员共享同一段内存,而结构体中的成员各自占用独立的内存空间。
|
27天前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
1月前
|
编译器 C语言 C++
C语言结构体
C语言结构体
25 5
|
1月前
|
编译器 Linux C语言
C语言 之 结构体超详细总结
C语言 之 结构体超详细总结
19 0
|
1月前
|
C语言
C语言调试
C语言调试
17 0
|
1月前
|
存储 编译器 Linux
深入C语言:探索结构体的奥秘
深入C语言:探索结构体的奥秘
|
1月前
|
存储 编译器 C语言
c语言回顾-结构体(2)(下)
c语言回顾-结构体(2)(下)
28 0
|
1月前
|
存储 编译器 程序员
c语言回顾-结构体(2)(上)
c语言回顾-结构体(2)(上)
28 0