C语言基础

什么是C语言?

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

C语言内的知识

数据类型、变量、常量、字符串、转义字符、注释、关键字、操作符、三大结构(顺序、选择、循环)、数组、函数、指针、结构体

数据类型

一个数据的“数据类型”,是该数据自身的一种属性,它告诉编译程序,这个数据要在内存中占用多少字节。

char              \\字符数据类型
short             \\短整型
int               \\整形
long              \\长整型
long long         \\更长的整形
float             \\单精度浮点数
double            \\双精度浮点数

变量、常量

生活中的有些值是不变的(比如:圆周率、身份证号、血型等等),有些值是可变的(比如:年龄、体重、薪资)。
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

字符串

例:“Hollow World!\n”
这中由双引号(Double Quote)引起来的一串字符称为字符串面值(String Literal),或者简称字符串。

转义字符

常见转义字符表

字符形式意义ASCII代码
\n换行,将当前的光标移到下一行的行首10
\a警报声(滴滴声)7
\t水平制表(光标跳到下一个制表位)9
\b退格,将光标移动到前一列8
\r回车,将光标移到本行的行首13
\f换页,将光标移到下一页的页首12
\\‘’反斜杠字符(\)92
\’单引号字符(’)39
\"双引号字符(”)34
\0001~3位八进制代表的字符3位八进制
\xhh1~2位十六进制数代表的字符2位十六进制
\0ASCII代码值为0的字符0

注释

1、代码中有不需要的代码可以直接删除,也可以注释掉。
2、代码中有些代码比较难懂,可以加一下注释文字。
注释的两种风格:
◆C语言风格的注释:/★xxxxxx★/
♢缺点:不能嵌套注释
◆C++风格的注释://xxxxxxxx
可以注释一行,也可以注释多行。

关键字

关键字是标识符的一种,它们在C语言中有着特殊的含义,不能用作普通标识符(但可以用作宏名)。
C语言常用关键字:
auto、break、case、char、const、continue、default、do、double、 else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while
新增关键字:-Bool、-Complex、-Imaginary、inline、restrict。

操作符

用来表示各种运算的符号称运算符(操作符)。

算术操作符
+-*/%                           求余(或称模运算)
移位操作符
>>                          右移
<<                          左移
位操作符
&                           位与
|                           位或
~                           位非                          
赋值操作符
=                           简单赋值
+=                          复合算数赋值
-=                          复合算数赋值
*=                          复合算数赋值
/=                          复合算数赋值
&=                          复合位运算赋值
|=                          复合位运算赋值
>>=                         复合位运算赋值
<<=                         复合位运算赋值
单目操作符
!                           逻辑反操作
-                           负值
+                           正值
&                           取地址
sizeof                      操作数的类型长度(以字节为单位)
~                           对一个数的二进制按位取反
--                          前置、后置--
++                          前置、后置++
*                           间接访问操作符(解引用操作符)
(类型)                    强制类型转换
关系操作符
>                           大于
>=                          大于等于
<                           小于
<=                          小于的等于
!=                          不等于
==                          等于
逻辑操作符
&&                          逻辑与
||                          逻辑或
条件操作符
exp1?exp2:exp3
逗号表达式
exp1,exp2,exp3, ...expN

三大结构(顺序、选择、循环)

1、顺序结构:顺序结构是编程的基础,就是指程序从上至下一条接着一条语句执行,程序只要没有发生转移就会顺序执行,这是一种最简单的控制结构,是其他结构的基础。
2、选择结构:选择结构的程序有三种形式:单分支结构、双分支结构和多分支结构。选择结构程序中的语句(段)是否执行,取决于某个“条件”是否成立。
3、循环结构:循环结构是程序中一个很重要的结构。其特点是,在给定条件成立时,反复执行某段程序段,直到条件不成立为止。给定的条件称循环条件,反复执行的程序段称为循环体。

数组

在C语言中使用数组必须先进行定义。
一维数组的定义方式为:

类型说明符      数组名    [常量表达式];

其中:
(1)类型说明符是任一种基本数据类型或构造数据类型。
(2)数组名是用户定义的数组标识符。
(3)方括号中的常量表达式表示数据元素的个数,也称为数组的长度,数组元素的表示从下标0开始。
(4)C编译系统为数组分配连续的存储空间,数组名代表数组在内存中存放的首地址(即数组第一个元素在内存中的存储地址)。
例如:

int a[10]; 说明整形数组a,10个元素。
float b[10],c[20];说明实型数组b,10个元素,实型数组c,20个元素。
char ch[20];说明字符数组ch,20个元素。

其中数组a的存储方式如下,每个存储单元占4个字节(Visual C++6.0)。

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

对于数组类型说明应注意以下几点:
(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
(2)数组名的书写规则应符合标识符的书写规定。
(3)数组名不能与其他变量名相同。
例如:

int main()
{
     int a;
     float a[10];
     ...
}

是错误的。
(4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此,5个元素分别为a[0],a[1],a[2],a[3],a[4]。
(5)不能在方括号中用变量来表示元素的个数,但是可以是符号常数或者常量表达式。
例如:

#define  FD  5
int main()
{
      int a[3+2],b[7+FD];
      ...
}

是合法的。但是下述说明方式是错误的;

int main()
{
    int a=5;
    int a[n];
    ...
 }   

(6)允许在同一个类型说明中,说明多个数组和多个变量。
例如:

int a,b,c,d,k1[10],k2[20];

函数

计算机的函数主要是为了代码段重复利用。
在C语言中可从不同的角度对函数分类。
(1)从函数定义的角度来看,函数可分为库函数和用户自定义函数两种。
1)库函数:由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。
2)用户自定义函数:由用户按需要编写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调用函数中还必须对该被调函数进行类型说明,然后才能使用。
(2)从函数的形式来看,函数可以分为无参函数和有参函数。
1)无参函数:函数定义、函数说明及函数调用中均不带参数。主调函数和被调函数之间不进行参数传递。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。
2)有参函数:也称带参函数。在函数定义及函数说明时都有参数称形式参数(简称为形参)。在函数调用时也必须给出参数称实际参数(简称实参)。进行函数调用时,主调用函数将把实参的值传送给形参,供被调函数使用。

指针

在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整形变量占4个单元(Visual C++6.0 平台),字节量占1个单元等。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也称地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称指针
内存单元的指针和内存单元的内容是两个不同的概念。
:我们到银行去存取款时,银行工作人员将根据我们的账号去找我们的存款单,找到之后在存单上写入存款、取款的金额。在这里,账号就是存单的指针,存款数就是指针的内容。
对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。
在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。

结构体

C语言提供用户将不同类型数据组合成一种新型的数据被称为结构体(structure)。有些高级语言也称其为记录(record)。结构体内包含多个成员,每个成员具有不同的名称,各成员可以采用不同的数据类型。结构体类型的引入,为C语言处理复杂的数据结构提供了强有力的手段,也方便函数间传递复杂的信息。
在使用结构体类型之前,必须像使用数组类型一样,先在程序中对其进行定义才能引用。定义一个结构体类型,需要使用C语言里面的关键字“struct”,定义结构体类型的一般格式是:

     struct 结构体类型名
     {
        <成员列表>;   

     };

说明:
(1)struct是定义结构体类型的关键字,具有标识作用,代表当前定义的是结构体类型,而非其他的数据类型。
(2)结构体类型名,是所定义的结构体类型的名称,用于和其他的结构体类型进行区分。
(3)成员列表,是结构体内所包含的数据项,称为结构体的成员,每一个成员都需要像变量一样进行声明,形如:

数据类型  成员名;

(4)结构体中的某个成员可以是指针型的。
(5)结构体成员除了可以是变量、数组、指针之外、还可以是另一个结构体变量。

结语

从上述内容可以看出,一门语言之中涵盖的内容是很多的。而且上述并没有列举完C语言所涵盖的内容。所列举的也只是从最简单的定义出发,旨在向大家阐述一下C语言大致包括什么。希望初学者,不要望而生畏而是一点一点的去积累。正所谓“不积跬步无以至千里”,另外如果阐述有误请批评,请指正。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星辰xyz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值