C语言基础(包含数组之前的内容)

C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。 C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。 当前最新的 C 语言标准为 C18 ,在它之前的 C 语言标准有 C17、C11...C99 等。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。

在经过一年的学习之后,我意识到C语言的重要性,因此重新梳理学习一遍C语言,笔记在此篇章。(依照网上的C语言教程,菜鸟教程CSDN

  • C结构:

#include<stdio.h>

int main()

{

    printf("Hello World");

    return 0;

}

一个C程序就是由若干个头文件和函数组成。

#include<stdio.h> 就是一条预处理命令, 它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。

int main至结尾的部分则被称为主函数部分,具体函数的用法不再赘述,可在互联网上自行查询。

  • C令牌(Token)

C语言中的各种令牌,可以是关键字、标识符、常量、字符串值,或者是一个符号。

分号:表示语句结束,用于表明一个逻辑实体的结束。

注释://or/**/

标识符:标识符用来标识变量,函数,或任何其他用户自定义项目的名称,标识符命名应当容易识别,且不能使用关键字作为标识符使用。

关键字:C语言的关键字是C标准中定义的,这些关键字不能作为常量名、变量名或其他标识符名称。(具体有哪些关键字可以自行查询)

空格:空格在C语言编译过程中不会被编译,空格可以起到分隔语句,增强代码可读性的功能。

  • C数据类型

  1. 基本数据类型:算术类型,整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。
  2. 枚举类型:也是算术类型,被用来定义程序中只能赋予其一定离散整数值的变量.
  3. void类型:void类型说明符,没有值的数据类型,用于函数返回值。
  4. 派生类型:数组类型、指针类型和结构体类型。

下图中说明了常见数据类型存储大小及值范围,其中第二张图中的值的表示

类型转换有自动类型转换和强制类型转换:

自动类型转换:自动转换发生在不同数据类型运算时,在编译的时候自动完成。 char类型数据转换为int类型数据遵循ASCII码中的对应值。

注: 字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换 char可以转换为int,int可以转换为double,char可以转换为double。但是不可以反向。

强制类型转换:顾名思义,强制把变量从一种类型转换为另一种数据类型。

注: 数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加。转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。强制转换后的运算结果不遵循四舍五入原则。

  • C变量和常量

变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。变量有许多不同的类型,整型、浮点型、枚举、指针、数组、结构、共用体等。自行定义的变量需要进行初始化,不初始化默认值为0(整型)。

变量声明时已经建立了存储空间,extern声明的便可以在别的文件中调用。

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。其中还需要了解的是一些转义序列码。下面附上一个我在网上找到的表格:

常量的定义:

使用 #define 预处理器:#define可以在程序中定义一个常量,它在编译时会被替换为其对应的值。

使用 const 关键字:const关键字用于声明一个只读变量,即该变量的值不能在程序运行时修改。

全局变量:全局变量是定义在函数外部,通常是在程序的顶部。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。

局部变量:在某个函数或块的内部声明的变量称为局部变量。它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。

全局变量与局部变量在内存中的区别:全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。

  • C存储类

auto  定义在函数中的变量默认为 auto 存储类,这意味着它们在函数开始时被创建,在函数结束时被销毁

register  存储类定义存储在寄存器,所以变量的访问速度更快,但是它不能直接取地址,因为它不是存储在 RAM 中的。在需要频繁访问的变量上使用 register 存储类可以提高程序的运行速度。

static    存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。

静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。

extern   存储类用于定义在其他文件中声明的全局变量或函数。当使用 extern 关键字时,不会为变量分配任何存储空间,而只是指示编译器该变量在其他文件中定义。

  • C运算符

算术运算符:

赋值运算符:

逻辑运算符:

三目运算符:

表达式1 ? 表达式2 : 表达式3;

先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。

注:需注意到各个运算符的优先级。

  • C判断

对于C语言各种基础语句的用法不再详细赘述。(可以在实践中熟悉)

  • C循环

  • C函数

在 C 语言中,函数由一个函数头和一个函数主体组成。

下面列出一个函数的所有组成部分:

返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。

函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。

参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

函数主体:函数主体包含一组定义函数执行任务的语句。

形参与实参:

函数的参数分为形参和实参两种。形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。就类似小明,说了的话而不实际行动;实参是在调用时传递该函数的参数。就如小刚能实际行动起来。

函数的形参和实参具有以下特点:形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。实参可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配的错误。

本文内容为个人在阅读其他文章时所做笔记,仅供参考。另外大家也可以关注我的个人公众号:晚霁见月,共同交流学习。

参考内容源自:

菜鸟教程icon-default.png?t=N7T8https://www.runoob.com/cprogramming/c-tutorial.htmlc语言入门这一篇就够了-学习笔记(一万字)icon-default.png?t=N7T8https://blog.csdn.net/qq_23079443/article/details/81108901?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170579815616800182767871%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170579815616800182767871&biz_id=0&utm_medi

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值