初识C语言系列-5-完结篇-#define,指针,结构体(一)

简介: 初识C语言系列-5-完结篇-#define,指针,结构体

1、前言

终于到了初识C语言的完结篇了,这里再次祝大家五一节日快乐哈!!这个系列结束后我们将正式开始C语言的学习——初阶C语言。博主尽量及时更新,让大家可以学到更多的东西,也感谢大家的多多支持哈!!!前几天博主没有更新,有些小伙伴来催更了,感谢大家伙对我写的博客的喜爱和支持,我会更加努力的!!!有什么问题也劳烦大家可以指出,不理解的地方也要在评论区多多留言哦!最后希望大家多多支持和关注哦!那么我们开始今天的学习吧!

博主的状态哈哈哈哈

2、define定义常量和宏

define定义常量

C语言中,可以用 #define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。


预编译又叫预处理。预编译不是编译,而是编译前的处理,编译器正式开始编译程序之前,会执行一段预处理程序(又称预处理器)专门对程序执行预处理操作。

#define 和 #include 一样,也是以“#”开头的。凡是以“#”开头的均为预处理指令,#define也不例外。

#define定义常量的语法:

#define  标识符  常量   //注意, 最后没有分号

变量名表示的是一个变量,但宏名表示的是一个常量。可以给变量赋值,但绝不能给常量赋值

如下面这个程序:

1. #include<stdio.h>
2. 
3. #define MAX 100//#define定义标识符常量
4. int main()
5. {
6. 
7. 
8.  printf("%d\n", MAX);
9. 
10. 
11.   return 0;
12. }

当我们给MAX赋值的时候就会报错了!!!

这就是说明了宏常量不能够修改

我们可以看到,#define定义的常量我们可以直接输出,其实,它也可以运算,我们可以把它理解成一个不变的数(当然,我们也可以手动改变它的数值),它可以参与数字的运算啊,放到数组充当数组长度啊,等等等等

1. #include<stdio.h>
2. 
3. #define MAX 100//#define定义标识符常量
4. int main()
5. {
6. 
7. 
8.  printf("%d\n", MAX);
9. 
10.   int a = 5 + MAX;
11.   int arr[MAX] = { 0 };
12.   printf("%d\n", a);
13. 
14.   return 0;
15. }

我们可以看到a的值变成了105

我们通过调试—>窗口—>监视来看看数组arr的下标情况:

我们可以清晰的看到,该数组的下标是从0~99,并且都被初始化为了0。

接着看呗哈哈哈哈

define定义的宏

#define定义的宏和函数有些相似,但又不一样

比如下面这个程序:

1. #include<stdio.h>
2. #define ADD(x,y) ((x)+(y))
3. int main()
4. {
5. 
6.  int sum = ADD(2, 3);
7.  printf("%d\n", sum);
8.  sum = 5 + ADD(2, 3);
9.  printf("%d\n", sum);
10. 
11.   return 0;
12. }

它所起到的作用和函数类似,但其定义和函数还是区别比较大的!!!

大家可以多去练练这个语法,说不定会有意外之喜呢!!!

加油,程序人哈哈哈。

3、指针

内存

指针是非常重要的一个知识点,希望大家能够好好的掌握!好好掌握哦!好好掌握!重要的事情说三遍!!!别不识好歹!!!

我们要想了解指针,首先要了解内存地址

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

补充一点小知识,感兴趣的同学可以了解一下哈!~



相关文章
|
24天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
77 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
20天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
103 14
|
24天前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
109 10
|
24天前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
48 9
|
24天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
42 7
|
28天前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
120 13
|
1月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
62 11
|
26天前
|
程序员 编译器 C语言
C语言中的预处理器指令,涵盖其基本概念、常见指令(如`#define`、`#include`、条件编译指令等)、使用技巧及注意事项
本文深入解析C语言中的预处理器指令,涵盖其基本概念、常见指令(如`#define`、`#include`、条件编译指令等)、使用技巧及注意事项,并通过实际案例分析,展示预处理器指令在代码编写与处理中的重要性和灵活性。
59 2
|
27天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。