码农小屋 码农小屋
  • 首页
  • 文章
    • Python
    • 计算机基础
    • C语言
    • Java
    • 数据库
    • Linux
  • 资源
  • 随笔
  • 优秀软件
  • 24h新鲜事
  • 专题
  • 留言板
  • 注册 登录
立即登录
0文章
0评论
0获赞
  • 首页
  • 博客中心
    • 文章
    • 资源
  • 随笔
  • 优秀软件
  • 24h新鲜事
  • 专题
  • 留言板
主页 › 文章 › C语言 › C语言基础知识
#C语言#

C语言基础知识

4月前
82 0 0

这里我们简单地介绍了以下关于C语言的很基础的知识,可能不是很全面,后续会继续更新和重新排版。

算法结构:

  一、顺序结构、选择结构、循环结构;二、循环结构又分为while型、until型、for循环结构;程序流程图;

结构化程序设计方法:

  (1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。

数据类型:

  • 常量:常量包括字面常量、直接常量和符号常量;
  • 变量:C语言规定标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后,在编译时就能为其分配相应的存储单元;
  • 整数类型:整数常量有十进制、八进制和十六进制;“%d”
  • 整形变量:数据在内存中存放形式是以二进制形式存放;有int型、short int型和long int型,无符号整型变量的范围是-32768—32767,有符号型为0~65535.通常把long定义为32位,把short定义为16位,int可以是32位也可以为16位,这都主要取决于机器字长。
  • 实型常量的表示方法:(1)十进制,0.0;(2)指数形式,123e3
  • 实型变量:实数型数据在内存中的存放形式,一般在内存中占4个字节,分成整数部分和小数部分存放。实型变量分为float型、double型long double型。实型数据会存在舍入误差。
  • 实型常量的类型:C编译系统将实型常量作为双精度来处理。
  • 字符型数组:
    1. 字符常量:转义字符(\n——换行,\t——tab,\r——回车,\f——换页,\b——退格,\ddd——1到3位8进制的数代表的字符)
    2. 字符变量:字符数据存储形式实际是以ASCII码存储。“%c”
    3. 字符串常量:双撇号括起来的一系列字符序列。

C语言的运算符:

优先级运算符含义运算方向
1(  )括号运算自左向右
1[   ]下标运算自左向右
1->指向结构体成员自左向右
1.结构体成员自左向右
2!逻辑运算 非自左向右
2~位运算 按位取反自左向右
2++自增运算自左向右
2--自减运算自左向右
2-取反运算(负号运算)自左向右
2(类型)类型转换运算自左向右
2*指针运算符(取值)自左向右
2&取地址运算符自左向右
2sizeof取长度运算自左向右
3*算术运算   乘自左向右
3/算术运算   除自左向右
3%算术运算   取余自左向右
4+算术运算   加自左向右
4-算术运算   减自左向右
5<< 位运算   左移自左向右
5>> 位运算   右移自左向右
6< 关系运算  小于自左向右
6<=关系运算  小于等于自左向右
6> 关系运算  大于自左向右
6>=关系运算  大于等于自左向右
7==关系运算  等于自左向右
7!=关系运算  不等于自左向右
8&位运算  按位与自左向右
9^位运算  按位异或自左向右
10|位运算  按位或自左向右
11&&逻辑运算  逻辑与自左向右
12||逻辑运算  逻辑或自左向右
13? ...   : ...条件运算自右向左
14= += -= *= /=   
&= ^= !=   
<<= >>=
赋值运算自右向左
15,逗号运算自左向右

C语言的控制语句:

if...else ...   条件语句goto... 无条件转移语句switch 多分支选择语句
for ( )...    循环语句while( )...  循环语句do... while( )  循环语句
continue 结束本次循环语句break  终止循环或switchreturn  从函数返回

字符数据的输入输出:

  • putchar()输入字符变量
  • getchar()只能接受一个字符

格式输入输出:

  • printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)
  • scanf(格式控制,地址列表)

C语言的数组:

  • 一维数组的定义:类型说明符 数组名【常量表达式】;先定义后引用;一维数组初始化时可以只对一部分元素初始化,在对全部数组元素初始化的时候可以部规定长度;但是若被定义的数组长度与提供的初始值不一样时,则数组长度不能省略。
  • 二维数组的定义:类型说明符 数组名【常量表达式】【常量表达式】C语言中存放二维数组是先存放第一行的元素,紧接着是第二行,其实也是以一维的方式存放。如果初始化时能指定所有元素的初始值,第一维大小可以省略,但是第二维不能省略。
  • 字符数组:定义和初始化跟数组差不多,只是需要加单引号。字符和字符串结束标志,C语言规定,以‘\0’代表。

字符串处理函数:

  • puts()将一个字符串输出到终端;
  • gets()从终端输入一个字符串到字符数组,并且得到一个函数值;
  • strcat()链接两个字符数组中的字符串;
  • strcpy()字符串复制函数;
  • strcmp()比较字符串作用;
  • strlen()测试字符串长度的函数不包括“\0”;
  • strlwr()将字符串中的大写字母转换为小写字母;
  • strupr()将字符串中的小写字母转换为大写字母。

C语言函数:

C语言中函数的意义:

  • 一个源程序由多个函数组成;
  • C程序的执行从main()函数开始;
  • 所有函数都是平行的;
  • 函数分类;可以分为标准和自定义,还可以分为有参函数和无参函数。

函数定义的一般形式:

类型标志符  函数名()
{
    声明部分
    执行语句
}

类型标志符  函数名(形式参数列表)
{    
    声明部分
    语句
}

关于形参和实参的说明:

  • 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只有发生调用时,才会分配内存;
  • 实参可以是常量、变量或者表达式;有时传递的时地址;
  •  在被定义中,形参必须指定类型;
  • 实参与形参的类型应相同或赋值兼容;
  • C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只有实参传递给形参,而不能由形参传递给实参。

函数的返回值:

C语言希望通过函数调用使主调函数得到一个确定的值。有以下规范:

  • 函数的返回值是通过函数中的return语句获取的。
  • 函数值的类型。
  • 如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。
  • 如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。
  • 如不需要带回任何值,用void。

函数的调用:

调用方式
  • 函数语句;
  • 函数表达式;
  • 函数参数。
被调用的函数的声明:

一个函数调用另一个函数所具备的条件:

  • 首先被调用的函数必须是已经存在的函数;
  • 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。
  • 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。
  • 如果被调用的函数定义出现在主调函数之前可以不必声明。
  • 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明。

局部变量和全局变量:

局部变量和全局变量的定义:

  • 局部变量在一个函数内部定义的变量是内部变量,它只是在本函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰;形式参数也是局部变量;在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合句也可以称为“分程序”或“程序块”;
  • 全局变量,在函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道,一般不再必要时不要使用,他在程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。还要注意若果同一源文件中,外部变量和局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,不起任何作用。

变量的存储类别:

动态存储方式,在程序运行期间进行分动态的分配存储空间的方式,静态存储方式是指在程序运行期间分配固定的存储空间的方式;存储空间分为程序区、静态存储区和动态存储区;全局变量全部放在静态存储区中,程序开始时分配空间,完毕时释放;动态存储区中存放以下数据:1、函数形式参数;2、自动变量;3、函数调用时的现场保护和返回地址;在C语言中每个变量和函数都有两个属性,是数据类型和数据存储类型,存储类别是数据在内存中存储的方式。

存储方式分为静态和动态存储类,具体包含有四种:自动的(auto),静态的(static),寄存器的(register),外部的(extern),如果不加以声明,就自认为是auto型就会自动分配存储空间属于动态存储方式。Static声明局部变量是在函数调用结束后不消失而保留原值,即占用存储单元不释放,在下一次调用该函数时,该变量已有值,就是上次函数调用结束时的值。其中需要说明的是在定义局部变量不赋初值的话,则静态局部变量编译时自动赋值为0或者空字符,虽然静态局部变量在函数调用结束后仍然存在,但是其他函数不能引用它的。静态局部变量主要用在当初始化后,变量只是被引用而不改变其值。Register变量是C语言中允许将局部变量的值放在CPU中的寄存器中需要时直接从寄存器中取出来参加运算,不必再到内存中提取,但是计算机系统中寄存器数量有限,不能任意定义任意多的存储器,局部静态变量不能定义为寄存器变量。Extern声明外部变量,用以扩展外部变量的作用域。在一个文件中,如果定义之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量做外部变量声明。在多文件中,也可以采用extern声明的办法进行外部变量声明。有时希望某些局部变量只限于被本文件引用,而不能被其他文件引用,这时就可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。Static来声明一个变量的作用有二个,一个是在声明对局部变量时。则为该变量分配的空间在整个程序执行期间始终存在;一个是在对全局变量声明中,该变量的作用域仅限于本文件模块操作。注意:这些方法同样适用于函数的声明。

简述指针:

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。

为什么需要指针?

指针解决了一些编程中基本的问题。

  • 第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然你也可以通过数据的复制达到相同的效果, 但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。  
  • 第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。  
  • 第三,有些操作必须使用指针。如操作申请的堆内存。还有:C语言中的一切函数调用中,值传递都是“按值传递”的,如果我们要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。

指针是什么?

我们指知道:C语言中的数组是指 一类 类型,数组具体区分为  int 类型数组,double类型数组,char数组 等等。同样指针 这个概念也泛指 一类 数据类型,int指针类型,double指针类型,char指针类型等等。

通常,我们用int类型保存一些整型的数据,如 int num = 97 , 我们也会用char来存储字符: char ch = 'a'。

我们也必须知道:任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。

因此: 指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。

0
独家记忆
相关文章
C语言 * 与 &
C语言中的“>>”和“<<”
C语言实验——合并表记录
C语言和C++的区别
C语言简介
评论 (0)
再想想
独家记忆作者
一个爱学习的程序猿
28文章 2评论 29获赞
文章推荐
ZIP Pro 3 – 文件压缩分享加密管理套件
2月前
Uninstall Tool-专业的软件卸载工具
3月前
Speccy:优秀的硬件检测工具
4月前
CleanMyPC-专为 Windows打造的清理工具
4月前
Internet Downloader Manager-一款专业的Win下载工具
4月前
Wise Care 365-Windows 系统清理和加速工具
4月前
新鲜事
新Mac太牛:在电脑上运行iPhone、iPad的软件、游戏
2月前
自从苹果M1芯片发布之后,使用这颗芯片的Mac电脑,就被大家认为是有史以来最强的Mac,因为这颗小米的芯片,在性能上已经打败了苹果使用的最高端的i9芯 ...[阅读全文]
苹果发布会总结:一个芯片,三款产品!苹果这把棋下得可真深
2月前
北京时间11月11日凌晨2点,苹果在圣何塞召开了本年度最后一场发布会。在这次发布会上,苹果推出了基于ARM架构的全新M1自研处理器。 ...[阅读全文]
荣耀命运落定:救了自己,也救华为
2月前
华为出售荣耀一事终于落槌。 ...[阅读全文]
发布会停不下来,苹果下月发布新Mac
3月前
今年的苹果有些与众不同,往年只开一次秋季发布会,今年在九月十月连开两场。 ...[阅读全文]
iPhone 12 开启 5G 续航锐减,苹果回应
3月前
对于今年的 iPhone 12 来说,除了回归直角边框设计之外,最大的亮点就是 5G 了。 ...[阅读全文]
华为Mate40正式发布
3月前
定位高端旗舰的华为Mate40系列共发布四款新机:华为Mate40(6.5英寸)、华为Mate40 Pro(6.76英寸)、华为Mate40 Pro+ ...[阅读全文]
更多
  • 专题
  • 文章
  • 友情链接
  • 留言板
Copyright © 2020-2021 码农小屋. 苏ICP备20033168号