C++基础语法和内存管理
发布时间: 2024-01-11 01:37:54 阅读量: 10 订阅数: 16
# 1. C语言基础简介
## 1.1 C语言概述
C语言是一种通用的高级语言,由美国贝尔实验室的Dennis Ritchie在20世纪70年代初设计出来。C语言是一种广泛使用的计算机编程语言,它可以用于系统软件的编写,以及应用软件的开发。C语言具有高效、灵活、功能丰富等特点,被认为是程序员必备的基本功之一。
## 1.2 C语言的特点
- C语言具有源代码级的可移植性,一个用C语言编写的程序可以在不同的计算机上进行编译,而不需要修改任何代码。
- C语言提供了丰富的运算符和表达式,可以进行灵活的计算和逻辑操作。
- C语言支持低级内存访问,可以直接操作内存地址,实现底层细节的控制。
## 1.3 C语言的发展历史
C语言的发展历史可以分为以下几个阶段:
- 1972年,Dennis Ritchie设计出最初版本的C语言,并用于Unix操作系统的重写工作。
- 1978年,美国国家标准协会(ANSI)开始着手制定C语言的标准,最终于1989年发布了ANSI C标准,即C89。
- 1999年,ANSI C标准进行了修订,新的标准称为C99,增加了一些新特性和改进。
以上是C语言基础简介部分的内容,后续章节将深入探讨C语言的基础语法、函数与指针、内存管理、结构体与联合体、文件操作与输入输出等方面的知识。
# 2. C语言基础语法
### 2.1 数据类型和变量
C语言中的数据类型和变量是基础的概念,是我们编写程序的基础。数据类型决定了变量所占用的内存空间,以及变量能够存储的值的范围和类型。
#### 2.1.1 基本数据类型
在C语言中,基本数据类型包括整型、浮点型、字符型和布尔型。以下是常用的基本数据类型及其在内存中的大小。
- 整型:int、short、long、unsigned int、unsigned short、unsigned long
- 浮点型:float、double
- 字符型:char
- 布尔型:bool
#### 2.1.2 变量的声明和定义
在C语言中,我们需要先声明一个变量,然后才能使用它。变量的声明将变量的名称和数据类型告诉编译器,而变量的定义则为变量分配内存空间。
```java
// 变量的声明
int num;
float pi;
// 变量的定义
int num = 10;
float pi = 3.14;
```
#### 2.1.3 变量的命名规则
在C语言中,变量的命名需要遵循一定的规则:
- 变量名由字母、数字和下划线组成,不能以数字开头。
- 变量名区分大小写。
- 变量名不能与C语言的关键字重复。
- 变量名要具有描述性,能够清楚地表示变量的用途。
### 2.2 运算符和表达式
C语言中的运算符和表达式是用来进行各种数学和逻辑运算的工具。
#### 2.2.1 数学运算符
C语言提供了常见的数学运算符,包括加法、减法、乘法、除法、取模等。
```java
int a = 10;
int b = 5;
int sum = a + b; // 加法
int diff = a - b; // 减法
int product = a * b; // 乘法
int quotient = a / b; // 除法
int remainder = a % b; // 取模
```
#### 2.2.2 关系运算符和逻辑运算符
在C语言中,我们可以使用关系运算符进行比较操作,使用逻辑运算符进行逻辑判断。
```java
int a = 10;
int b = 5;
bool isEqual = (a == b); // 相等
bool isNotEqual = (a != b); // 不相等
bool isGreater = (a > b); // 大于
bool isLess = (a < b); // 小于
bool isGreaterOrEqual = (a >= b); // 大于等于
bool isLessOrEqual = (a <= b); // 小于等于
bool logicalAnd = (a > 0 && b > 0); // 逻辑与
bool logicalOr = (a > 0 || b > 0); // 逻辑或
bool logicalNot = !(a > 0); // 逻辑非
```
### 2.3 控制语句(if、switch、while、for等)
控制语句是用来控制程序执行流程的工具,能够根据条件选择不同的路径执行。
#### 2.3.1 if语句
if语句用于根据条件选择执行不同的代码块。
```java
int num = 5;
if (num > 0) {
printf("num是正数");
} else if (num == 0) {
printf("num是零");
} else {
printf("num是负数");
}
```
#### 2.3.2 switch语句
switch语句用于根据表达式的值选择执行不同的代码块。
```java
int dayOfWeek = 2;
switch (dayOfWeek) {
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
default:
printf("其他");
break;
}
```
#### 2.3.3 while循环和for循环
while循环和for循环用于重复执行一段代码,直到达到退出条件。
```java
// while循环
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
// for循环
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
```
以上是C语言基础语法的概述,包括数据类型和变量、运算符和表达式,以及控制语句。掌握了这些基础知识,我们就可以开始编写简单的C语言程序了。
# 3. C语言函数与指针
## 3.1 函数的定义与调用
函数是C语言中最基本的程序单元,它可以执行一系列的操作,并且可以被其他代码多次调用。在C语言中,函数的定义由函数头和函数体组成,函数名、参数列表和返回值类型都需要在函数头中进行声明。
```c
#include <stdio.h>
// 函数的定义
int sum(int a, int b) {
return a + b;
}
int main() {
int num1 = 5;
int num2 = 7;
// 函数的调用
int result = sum(num1, num2);
printf("Sum: %d\n", result);
return 0;
}
```
**代码解析:**
- 在上面的代码中,我们定义了一个求和函数`sum`,它接受两个整型参数`a`和`b`,并返回它们的和。
- 在`main`函数中,我们声明了两个整型变量`num1`和`num2`,并将它们的值分别设为5和7。
- 通过调用`sum`函数,将`num1`和`num2`作为参数传递进去,并将返回的结果保存到`result`变量中。
- 最后,使用`printf`函数打印出结果。
## 3.2 函数参数传递
函数参数的传递方式有两种:值传递和地址传递。值传递是指将参数的值复制一份给函数中的变量,地址传递是指将参数的地址传递给函数中的指针变量。
```c
#include <stdio.h>
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
void swapByPtr(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1 = 5;
int num2 = 7;
printf("Before swap: num1 = %d, num2 = %d\n", num1, num2);
swap(num1, num2);
printf("After swap (by value): num1 = %d, num2 = %d\n", num1, num2);
printf("Before swap: num1 = %d, num2 = %d\n", num1, num2);
swapByPtr(&num1, &num2);
printf("After swap (by address): num1 = %d, num2 = %d\n", num1, num2);
return 0;
}
```
**代码解析:**
- 在上面的代码中,我们定义了两个函数:`swap`和`swapByPtr`。
- `swap`函数根据传入的两个参数`a`和`b`
0
0