【C语言初学】--- 基础知识点梳理

【C语言初学】 基础知识点梳理

在平时敲C语言代码的时候很可能会被少一个分号或者一个括号折磨的死去活来,或者不清楚什么是短整型,长整型,=和==的区别,一维数组和二维数组的区别,什么是形参,什么是实参等等…这些入门知识绝对不是天方夜谭!

1.C语言的操作符:

1· 算术运算符(+ - * %)结合方向自左向右
2· 关系逻辑运算(> < == >= <= !=)
3· 逻辑运算符(! && ||)
4· 位运算符(<< >> ~ | ^ &)
5· 赋值运算符(=及)
6· 条件运算符(? )
7· 逗号运算符( , )
8· 指针运算符( * &)
9. 求字节运算符(sizeof)
10.强制类型转换运算符((类型))
11.分量运算符(. ->)
12.下标运算符( [] )

使用警告
1.有符号值的右移位操作是不可移植的
2.移位操作的位数是个负值
3.连续赋值中各个变量的长度不一
4.误用=而不是==进行比较
5.误用 | 代替 || ,误用 & 代替 &&
6.在不同的用于表示布尔值的非零值之间进行比较
7.表达式的赋值并不决定表达式计算的精度
8.编写结果依赖于求值顺序的表达式

2.控制语句

1.if() else
2.for()
3.while()
4.do while()
5.continue
6.break
7.switch
8.goto
9.return

使用警告
1.编写不会产生任何结果的表达式
2.确信在if语句中的语句列表前后加上花括号
3.在switch语句中,执行流意外地从一个case顺延到下一个case
4.在一个没有循环体的循环中,用一个分号表示空语句,并让它独占一行
5.for循环语句的可读性比while()循环强,因为它把用于控制循环的表达式收集起来放在一起
6.在每个switch语句中都使用defalut

3.数据类型

常量:常量包括字面常量,直接常量和符号常量;
变量:C语言规定标志符只能由字母,数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后,在编译时就能为其分配相应的存储单元。

整型类型:整型常量有十进制,八进制和十六进制("%d")
整型变量:数据在内存中存放形式是以二进制形式存放;有int型,short int型,无符号整型变量的范围是-32768-32767,有符号位0-65535。通常把long定义为32位,把short定义为16位,int可以是32位也可以是16位,这都主要取决于机器字长。
实型常量的表示方法:(1) 十进制 0.0;(2) 指数形式 , 123e4
实型变量:实数型数据在内存中的存放形式,一般在内存中占4字节,分成整数部分和小数部分存放。实型变量分为float型、double型 long double型。实型数据会存在舍入误差。
实型常量的类型:c编译系统将实型常量作为双精度来处理。
字符型数组

  • (一)字符常量:转义字符(\n——换行,\t——tab,\r——回车,\f——换页,\b——退格,\ddd——1到3位8进制的数代表的字符)
  • (二)字符变量:字符数据存储形式实际是以ASCII码存储。“%c”

字符串常量:双撇号括起来的一系列字符序列。

使用警告
1.为了保持最佳的可移植性,把字符的值限制再有符号和无符号字符范围的交集之内,或者不要在字符上执行算术运算。
2.用它们在使用时最自然的形式来表示字面值。
3.不要把整型值和枚举值混在一起。
4.不要依赖隐式声明。
5.在定义类型的新名字时,使用typedef而不是#define
6.用const声明其值不会修改的变量。
7.使用名字常量而不是字面值常量。
8.不要再嵌套的代码块之间使用相同的变量名。
9.除了实体定义位置之外,在它的其他声明位置都使用extern关键字。

4.数组

  • 一维数组的定义:类型说明符
    数组名【常量表达式】;先定义后引用;一维数组初始化时可以只对一部分元素初始化,在对全部数组元素初始化的时候可以部规定长度;但是若被定义的数组长度与提供的初始值不一样时,则数组长度不能省略。

  • 二维数组的定义:类型说明符
    数组名【常量表达式】【常量表达式】C语言中存放二维数组是先存放第一行的元素,紧接着是第二行,其实也是以一维的方式存放。如果初始化时能指定所有元素的初始值,第一维大小可以省略,但是第二维不能省略。

  • 字符数组:定义和初始化跟数组差不多,只是需要加单引号。字符和字符串结束标志,C语言规定,以‘\0’代表。

使用警告
  1.当访问多维数组的元素时候,勿要用逗号分割下标。
  2.不要在指向一个未指定长度的数组指针上执行运算。
  3.在多维数组的初始值列表中使用完整的多层花括号能提高代码可读性。

5.形参和实参

(1) 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只有发生调用时,才会分配内存。

(2) 实参可以是常量、变量或者表达式;有时传递的时地址;

(3) 在被定义中,形参必须指定类型;

(4) 实参与形参的类型应相同或赋值兼容;

(5) C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只有实参传递给形参,而不能由形参传递给实参。

使用警告
  1.把函数原型和旧形式风格 的函数定义混合使用。
  2.在va_arg中使用错误的参数类型,导致未定义的结果。
  3.在函数原型使用参数名,可以给使用函数的用户提供更多的信息。

6.函数的返回值

希望通过函数调用使主调函数得到一个确定的值。
(1)函数的返回值是通过函数中的return语句获取的。
(2)函数值的类型;
(3)如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。(4)如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。
(5)如不需要带回任何值,用void。

7.函数调用

调用方式1、函数语句;2、函数表达式;3、函数参数。

被调用的函数的声明

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

1、首先被调用的函数必须是已经存在的函数;

2、如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。

3、如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。

4、如果被调用的函数定义出现在主调函数之前可以不必声明。

5、如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明。

8.局部变量和全局变量

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

9.数据的存储类别(相当重要)

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

L19002S

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

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

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

打赏作者

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

抵扣说明:

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

余额充值