C语言的基础学习

C语言的变量

 ## C语言中的变量

在C语言中,变量是对程序中数据所占内存空间的一种抽象定义。定义变量时,用户定义变量的名、变量的类型,这些都是变量的操作属性。不仅可以通过变量名访问该变量,系统还通过该标识符确定变量在内存中的位置 [❷](https://www.dotcpp.com/course/27)。

### 变量的定义和声明

在C语言中,变量的定义和声明是两个不同的概念。变量定义用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。而变量声明则用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。但是,通过使用extern关键字声明变量名而不定义它,这被称为extern声明,它不是定义,因为不分配存储空间 [❶](https://blog.csdn.net/gatieme/article/details/50640424) [❹](https://www.cnblogs.com/MoKinLi/p/12663366.html)。

### 变量的存储类型

在C语言中,变量的存储类型关系到变量的存储位置,C语言中定义了4种存储属性,即自动变量(auto)、外部变量(extern)、静态变量(static)和寄存器变量(register),它关系到变量在内存中的存放位置,由此决定了变量的保留时间和变量的作用范围 [❷](https://www.dotcpp.com/course/27)。

### 变量的生命周期

变量的生命周期也称为生存期,从时间角度,可将变量分为静态存储和动态存储两种情况:

- 静态存储是指变量存储在内存的静态存储区,在编译时就分配了存储空间,在整个程序的运行期间,该变量占有固定的存储单元,程序结束后,这部分空间才释放,变量的值在整个程序中始终存在。
- 动态存储是指变量存储在内存的动态存储区,在程序的运行过程中,只有当变量所在的函数被调用时,编译系统才临时为该变量分配一段内存单元,函数调用结束,该变量空间释放,变量的值只在函数调用期存在 [❷](https://www.dotcpp.com/course/27)。

### 变量的作用范围

从空间角度,可以将变量分为全局变量和局部变量:

- 局部变量是在一个函数或复合语句内定义的变量,它仅在函数或复合语句内有效,编译时,编译系统不为局部变量分配内存单元,而是在程序运行过程中,当局部变量所在的函数被调用时,编译系统根据需要,临时分配内存,调用结束,空间释放。
- 全局变量是在函数之外定义的变量,其作用范围为从定义处开始到本文件结束,编译时,编译系统为其分配固定的内存单元 [❷](https://www.dotcpp.com/course/27)。

### 变量的命名规则

在定义变量时,变量名可以是字母、数字和下划线的组合。但是也不是随便的组合,要注意以下几个命名规则:

1. 变量名的开头必须是字母或下划线,不能是数字。
2. 变量名中的字母是区分大小写的。
3. 变量名中不能有空格。
4. 变量名绝对不可以是 C 语言关键字。
5. 变量名中不能有特殊字符,如:冒号、括号、引号等 [❸](https://blog.csdn.net/baidu_1234567/article/details/135321034)。

以上就是C语言中变量的定义和使用的基本知识,希望对你有所帮助。 

C语言的数据类型

 C语言的数据类型主要包括以下几种:

1. **整型**:整型是C语言中最基础的数据类型,包括`short`, `int`, `long`, `char`, `float`, `double`这六种。其中,`short`和`int`是32位系统的标准整型,`long`是64位系统的标准整型,`char`是字符型,`float`是单精度浮点数,`double`是双精度浮点数 [❶](https://www.dotcpp.com/course/10) [❷](https://developer.aliyun.com/article/1195521) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。

   - `short`: 短整型,占用2个字节,取值范围为-32,768到32,767 [❶](https://www.dotcpp.com/course/10) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。
   - `int`: 整型,占用4个字节,取值范围为-2,147,483,648到2,147,483,647 [❶](https://www.dotcpp.com/course/10) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。
   - `long`: 长整型,在16位编译器、32位编译器中都占用4个字节,取值范围为-2,147,483,648到2,147,483,647,在64位编译器中占用8个字节 [❶](https://www.dotcpp.com/course/10) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。
   - `char`: 字符型,占用1个字节,取值范围为-128到127 [❶](https://www.dotcpp.com/course/10) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。
   - `float`: 浮点型,占用4个字节,取值范围为约1.2E-38到3.4E+38 [❶](https://www.dotcpp.com/course/10) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。
   - `double`: 双精度浮点型,占用8个字节,取值范围为约2.2E-308到1.8E+308 [❶](https://www.dotcpp.com/course/10) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。

2. **字符型**:字符型是用来表示字符的数据类型,包括`char`和`unsigned char`两种。`char`表示带符号的字符,取值范围为-128到127,`unsigned char`表示无符号字符,取值范围为0到255 [❶](https://www.dotcpp.com/course/10) [❷](https://developer.aliyun.com/article/1195521) [❺](https://blog.csdn.net/qq_28576837/article/details/125074297)。

3. **空类型**:空类型是C语言中的一种特殊类型,表示没有任何数据,通常用于函数的返回类型或者参数类型 [❷](https://developer.aliyun.com/article/1195521)。

4. **构造类型**:构造类型包括数组、结构体、共用体、枚举类型等,这些类型可以用来创建复杂的数据结构 [❷](https://developer.aliyun.com/article/1195521)。

5. **指针类型**:指针类型表示指向某个特定类型数据的地址,可以用来动态地管理内存 [❷](https://developer.aliyun.com/article/1195521)。

以上就是C语言的主要数据类型及其特点,每种类型都有其适用的场合和特性,选择合适的数据类型对于编写高效、健壮的程序至关重要。 

C语言的流程控制

C语言中的流程控制语句主要包括以下几种:

 

1. **条件判断语句**:也叫分支语句,主要包括`if`语句和`switch`语句。`if`语句可以有三种用法,分别是单分支条件语句、双分支条件语句和多分支条件语句。`switch`语句只适合于小范围内的无重复数值进行判断,每个case管辖的语句到`break`为止 [❶](https://blog.csdn.net/Srlua/article/details/134755743) [❹](https://www.cnblogs.com/030622zfy-/p/16803582.html) [❼](https://blog.csdn.net/wrx1995/article/details/49046327)。

 

2. **循环执行语句**:主要包括`for`循环、`while`循环和`do-while`循环。这些语句可以让一组语句多次反复执行,直到满足退出条件 [❶](https://blog.csdn.net/Srlua/article/details/134755743) [❹](https://www.cnblogs.com/030622zfy-/p/16803582.html) [❼](https://blog.csdn.net/wrx1995/article/details/49046327)。

 

3. **转向语句**:主要包括`break`语句、`goto`语句、`continue`语句和`return`语句。`break`语句和`goto`语句用于终止当前循环或跳出程序,`continue`语句用于跳过本次循环中剩余的语句,直接进入下一次循环,`return`语句用于结束函数并返回结果 [❶](https://blog.csdn.net/Srlua/article/details/134755743) [❹](https://www.cnblogs.com/030622zfy-/p/16803582.html) [❼](https://blog.csdn.net/wrx1995/article/details/49046327)。

 

以下是一些示例代码:

 

```c

#include

int main() {

    int i = 0;

    do {

        printf

 

C语言的对象和面相对象

在C语言中,对象的概念并不像在某些面向对象的编程语言(如Java、Python等)中那样明确。然而,C语言中确实有一些机制可以模拟对象的行为。

C语言中的对象,广义上指的是在内存中的一段有意义的区域 [❷](https://blog.csdn.net/m0_64075307/article/details/121588917) [❸](https://wen.baidu.com/question/1998308900531478187.html) [❼](https://zhidao.baidu.com/question/223436708.html)。狭义上讲,对象具有特定长度的类型,可以称作为对象类型,但其函数不具有特定长度,所以不是对象类型 [❼](https://zhidao.baidu.com/question/223436708.html)。

C语言中的对象可以储存一个或多个值,一个对象可能并未储存实际的值,但是它在储存适当的值时一定具有相应的大小 [❷](https://blog.csdn.net/m0_64075307/article/details/121588917) [❸](https://wen.baidu.com/question/1998308900531478187.html)。例如,在C语言中,字符串常量就是一个对象,它在内存中存储了一串字符,但这些字符本身并没有实际的值。

此外,C语言中还可以通过结构体来实现一些类似于对象的特性。结构体可以包含一组相关的数据和函数指针,从而实现数据和操作的封装 [❶](https://juejin.cn/s/c%E8%AF%AD%E8%A8%80%E6%9C%89%E7%B1%BB%E5%92%8C%E5%AF%B9%E8%B1%A1%E4%B9%88)。

总的来说,尽管C语言没有明确的对象概念,但通过结构体和其他一些机制,还是可以实现一些对象的功能。

C语言的函数

## C语言函数的定义和使用

 

在C语言中,函数是一组一起执行一个任务的语句。每个C程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数 [❶](https://www.w3cschool.cn/c/c-functions.html)。

 

### 函数的定义

 

C语言中的函数定义的一般形式如下:

 

```c

return_type function_name(parameter list) {body of the function}

```

 

在C语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:

 

- 返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字void [❶](https://www.w3cschool.cn/c/c-functions.html)。

- 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名 [❶](https://www.w3cschool.cn/c/c-functions.html)。

- 参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数 [❶](https://www.w3cschool.cn/c/c-functions.html)。

- 函数主体:函数主体包含一组定义函数执行任务的语句 [❶](https://www.w3cschool.cn/c/c-functions.html)。

 

### 函数的使用

 

函数的使用主要包括函数的声明和函数的调用。

 

- 函数的声明是指告诉编译器函数的存在以及函数的参数类型、返回值类型。函数声明通常写在程序的开头(或头文件中),执行函数的代码在函数声明之后 [❸](https://blog.csdn.net/weixin_64568489/article/details/130328148)。

- 函数的调用是指程序运行时,调用已经声明或定义好的函数并传入函数所需要的参数。例如:`c = add(a, b);` 这是一个函数的调用,调用add函数,并传入参数a和b,将函数返回值保存在变量c中 [❸](h

C语言的面相对象

在C语言中,面向对象编程并不是一种特定的语言或者工具,而是一种设计方法、设计思想。它表现出来的三个最基本的特性就是封装、继承与多态 [❷](https://zhuanlan.zhihu.com/p/505361344) [❼](https://blog.csdn.net/mayi_xiaochaun/article/details/116034548)。

 

## 封装

 

封装是面向对象编程的核心思想。方法和数据通过封装组成一个整体,封装实现了信息的隐藏(隐藏了数据和功能的实现细节),对象只能通过定义的方法与外界进行信息交流 [❶](https://blog.csdn.net/li_man_man_man/article/details/121492088)。

 

在C语言中,我们可以使用结构体struct来实现封装。例如,我们可以定义一个结构体,结构体内部包含两个变量:编号和重量,同时还包含3个函数指针:初始化函数指针,喂食函数指针,查询重量函数指针 [❶](https://blog.csdn.net/li_man_man_man/article/details/121492088)。

 

## 继承

 

继承是面向对象编程的另一个重要特性。继承允许一个类继承另一个类的属性和方法。在C语言中,我们可以通过使用结构体的组合来模拟继承。

 

## 多态

 

多态是面向对象编程的另一个重要特性。多态允许一个对象根据其不同的基类而表现出不同的行为。在C语言中,我们可以通过函数指针和函数重载来实现多态。

 

尽管C语言并不是一个面向对象的语言,但是这并不影响C语言的强大,C语言在操作系统内核设计,编译器设计等领域有着广泛的应用 [❶](https://blog.csdn.net/li_man_man_man/article/details/121492088)。

 

总的来说,虽然C语言没有明确的面向对象编程特性,但是通过一些设计技巧,我们仍然可以实现面向对象编程的一些基本特性。

 

 

你可能感兴趣的:(c语言)