C语言学习笔记

数据类型

  • 基本类型:整数类型、浮点类型
  • void类型 :表示没有可用的值
  • 枚举类型:表示定义离散数据
  • 派生类型:比如:指针类型、数组,结构类型,函数类型,共用体类型。其中数组和结构称为聚合类型,函数类型指的是函数返回值的类型。

C 中的变量声明

变量的声明有两种情况:

  • 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
  • 另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。

C 常量

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

常见常量
1、整数常量
  • 整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
  • 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
2、浮点常量

浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。

double f = 314e2; //31410^2–>31400.0
double f2 = 314e-2; //314
10^(-2)–>3.14

  • float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
3、字符常量

字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’),或一个通用的字符(例如 ‘\u02C0’)

定义常量

在 C 中,有两种简单的定义常量的方式:

  • 使用 #define 预处理器。
  • 使用 const 关键字,const 声明常量要在一个语句内完成:

请注意,把常量定义为大写字母形式,是一个很好的编程习惯。

C 存储类

auto // auto 存储类是所有局部变量默认的存储类。
register //存储类用于定义存储在寄存器中,且不能位运算
static //声明static 变量或方法能被任何函数或方法调用,要求在同一个文件中
extern //extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的

C 运算符

位运算符

主要&、 | 和 ^ ,分别是按位与,按位或和异或
规律就是,与:全为1为1,或:只要有一个为1为1,亦或:不相同为1,相同为0;
补充:

~,取反,有符号区分
<<,左移,二进制左移运算符,<<2,十进制乘以2^2,也就是4
>>,右移,二进制右移变小,>>2,十进制除以4

赋值运算符

特殊的赋值运算符

>>= ,右移且赋值运算符,C >>= 2 等同于 C = C >> 2

杂项运算符

sizeof(),返回变量的大小。
&,返回变量地址,如 &a; 将给出变量的实际地址。
*,指向一个变量,如 *a; 将指向一个变量。
? :,如果条件为真 ? 则值为 X : 否则值为 Y

C 指针

每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。

  • 指针也就是内存地址,指针变量是用来存放内存地址的变量。
  • 星号是用来指定一个变量是指针。
  • 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值
指针计算

(1) 指针的每一次递增,它其实会指向下一个元素的存储单元。
(2) 指针在递增和递减时跳跃的字节数取决于指针所指向变量数据类型长度,比如 int 就是 4 个字节。
(3)指针数组,*p[MAX],max是设置的数组大小。
(4) 一个指向指针的指针变量必须声明为 **p。

函数指针

函数指针是指向函数的指针变量。例如:

int (* p)(int, int)
//调用d = p(a, b); 

结构体

共用体

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。但是任何时候只能有一个成员带有值,最后赋值会把其他的值的位置占用。

C 位域

C typedef

C 预处理器

所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。

#define 定义宏
#include 包含一个源代码文件
#undef 取消已定义的宏

预定义宏

DATE 当前日期,一个以 “MMM DD YYYY” 格式表示的字符常量。
TIME 当前时间,一个以 “HH:MM:SS” 格式表示的字符常量。
FILE 这会包含当前文件名,一个字符串常量。
LINE 这会包含当前行号,一个十进制常量。

C 头文件

头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。
有两种类型的头文件:
(1) 程序员编写的头文件
(2)编译器自带的头文件。

### C语言学习笔记与教程 C语言作为一门基础且强大的编程语言,其学习资源丰富多样。以下是关于C语言学习的一些关键点和推荐的学习路径。 #### 1. 学习平台与环境 C语言可以在多种平台上进行学习,包括Windows和Linux。然而,推荐在Linux平台上学习C语言[^1],因为Linux提供了更丰富的开发工具和库支持,同时在嵌入式开发、系统编程等领域具有更广泛的应用场景。 #### 2. 核心知识点 学习C语言时,需要掌握以下几个核心知识点: - **变量与数据类型**:了解基本的数据类型(如`int`, `float`, `char`等)以及如何声明和使用变量。 - **数组**:掌握一维数组和多维数组的定义与操作。 - **函数**:理解函数的定义、调用以及参数传递方式。 - **指针**:这是C语言中非常重要且复杂的部分,需要深入学习指针的概念及其应用。 - **结构体**:学习如何定义和使用结构体来组织复杂的数据。 - **标准库**:熟悉C语言提供的标准库函数,例如输入输出函数(`printf`, `scanf`)、字符串处理函数(`strcpy`, `strlen`)等[^1]。 #### 3. 学习方法 对于初学者,建议按照以下方法进行学习: - **循序渐进**:从基础语法开始,逐步深入到高级概念。可以参考全面的C语言学习指南,这些指南通常由经验丰富的开发者编写,能够提供清晰的学习路线图[^2]。 - **实践为主**:编程语言的学习离不开实践。通过编写小程序来巩固所学知识,并尝试解决实际问题。 - **分析复杂代码**:当遇到多层循环嵌套等复杂代码时,可以采用手动分析的方法。准备纸笔,逐层分析循环条件和运行结果,这种方法有助于培养逻辑思维能力[^3]。 #### 4. 推荐教程与资源 以下是一些推荐的学习资源: - 在线教程:寻找权威网站上的C语言入门教程,例如官方文档或知名教育平台。 - 视频课程:观看视频课程可以帮助更好地理解抽象概念。 - 实践项目:参与小型项目开发,例如实现简单的计算器、学生管理系统等。 ```c // 示例代码:一个简单的C语言程序 #include <stdio.h> int main() { int num1, num2, sum; printf("请输入两个整数: "); scanf("%d %d", &num1, &num2); sum = num1 + num2; printf("两数之和为: %d\n", sum); return 0; } ``` 上述代码展示了一个简单的C语言程序,用于计算两个整数的和。通过类似的小程序练习,可以快速掌握C语言的基本语法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值