C语言基础知识汇总

C语言具有简洁紧凑,灵活方便,运算符丰富,数据类型丰富,表达方式灵活实用等特点,所以C语言程序设计更主动、灵活。很多人从C语言入门编程,下面整理了一些C语言基础知识,希望对大家有所帮助!

1.C语言中,变量必须先声明后使用,即一个程序块(花括号对)中所有临时变量必须在第一条可执行语句之前全部声明,而不能像C++那样随用随声明;

2.C语言中参数传值传递形参,即为参数的拷贝,此与C++/JAVA相同,同时值得注意,ANSIC不支持引用,此与C++/JAVA有区别,那么要对参数进行修改只能使用指针方式(指针传值指针本身仍是形参,要修改指针本身那必须使用双重指针);

3.C语言默认类型为int,即参数无类型或函数无返回值类型声明,则认为是int(貌似一些编译器不支持),同时不建议使用该特*;

4.无参数的函数声明应当使用void表明,否则C语言按照老式声明方法忽略参数类型检查;

5.全局变量建议全大写,局部变量建议全小写,内部变量31个字符有效,外部变量不区分大小写,仅6个字符有效,所以必须保持唯一*;

6.ANSIC是按照多字节实现的,UNICODE是后来发展的,所以有char/WCHAR,与中char直接是双字节有区别,在C#中导入dll时值得注意;

7.C语言支持枚举,并且枚举和int直接强制类型转换即可,比方便;

8.#define声明宏定义直接在编译时替换,不进行类型检查,const声明常量则可以进行类型检查;

9.运算符的优先级记忆比较麻烦,还是()可靠;

10.goto并不是一无是处,在不考虑程序可读*的情况下可能获得更高的效率;

11.函数实际也可以与特殊的类型相对应,那样对于理解函数指针比较方便,函数为外部类型;

12.static用于全局变量和函数则限定该变量和函数的使用范围仅为该源文件(从而无需考虑与其他源文件不得重名),用于函数内部变量则该变量的内存分配和回收不再同于普通临时变量(调用函数生成,函数返回销毁),而是一直存在于静态变量区,从而可以保存一些状态;

13.头文件的作用体现在调用其他源文件时不需要再次写函数定义,所以实现函数是不需要头文件的,调用时才需要,可以采用富头文件定义一大组接口,然后使用多个源文件分别实现;

14.寄存器变量使用register声明,仅适用于使用频率高的局部变量(含形参)(受限于底层硬件,不一定会被分配到寄存器,但是这么写不影响效率);

15.全局变量和静态变量默认初始化为全零且仅初始化一次,局部变量默认初始化为未定义且每次都会重新初始化;

16.递归调用的方法一般比较紧凑,但是每次调用会单独维护调用的堆栈,所以效率不是最高;

17.#include的作用体现于将一些内容避免重新写一遍(主要是类型、函数和外部变量定义),所以实际上不一定为h文件;

18.表示一行尚未结束,对于定义长的字符串和define比较有用;

19.函数调用的执行顺序不确定,所以对于a()+b()这样函数中使用相同变量并且改变其值的需要借助临时变量处理,防止不同实现的调用顺序不一致;

20.##用于宏定义中连接前后两个部分,如cat(a,b)a##b;

21.指针是C/C++的重要内容,当然也是双面刃,用好了很方便而且高效,用不好那就造成程序不稳定;

22.使用va_list,va_start,va_arg,va_end来定义可变参数的函数,通过va_start函数中的第一个不变参数将va_list指向参数列表(函数调用的栈中),然后通过va_arg获取每个参数并将va_list移动指定类型的长度,最后则通过va_end完成必要的回收工作,需要指出的是va_arg没有结束边界,所以比较有效的方式有两种,一种对于参数类型一致,则可以第一个参数指出后续参数的总数,然后依次获取,另一种对于不同类型的参数混用,则可以通过类型标识+参数配对的方式进行使用(第一个参数依然可以指定数量,当然也可以检查标识),从而避免最后读取无效的参数,对于可变参数仅支持int和double两种类型(参数未限定类型,故按照旧式声明理解)以及指针类型;

23.函数指针是用来在C语言中实现动态调用的比较有效的方式

24.结构体用作参数依然是拷贝为形参传递,这点与JAVA中全部对象都是类有区别(类的对象通过引用传值,C#支持struct),所以对于大的结构体事宜使用指针传递,而对于小的结构体拷贝传值效率并不低;

25.代码中字符数组为静态常量,对其*作无效,程序块中数组的声明是可以自动回收的,通过malloc/calloc分配的内存为堆内存,需要自行通过free回收;

第2篇:C语言基础知识小总结

C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。下面是小编给大家分享的C语言基础知识小总结,快来看看吧。

1.每个C程序有且只有一个主函数main(),且程序必须从main()函数开始执行,并在main()函数中结束。

2.在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。

3.用单引号括起来的一个字符常量只能存放一个字符;C语言中没有字符串变量,只能用字符数组来存储字符串。

4.外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。

5.在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。6.用sizeof(int)计算int类型数据的字节数。

7.C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。

8.预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯*的表示;宏替换不仅不占用运行时间还不分配内存空间。

9.feof函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。

10.当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名

第3篇:C语言基础知识点集锦

C语言是近年来使用最为广泛的编程语言,下面整理了一些C语言基础知识点,希望对大家有所帮助!

【知识点1】C程序

C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)

【知识点2】main函数

每个C语言程序中main函数是有且只有一个。读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

【知识点3】存储形式

计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八个位。数据存放的位置就是它的地址。

【知识点4】注释

是对程序的说明,可出现在程序中任意合适的地方,注释从“”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

【知识点5】书写格式

每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。

【知识点6】标识符

合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。

C语言标识符分如下3类

(1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。

(2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。

(3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。

关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

【知识点7】实型数据

实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法*。

2.333e-1就是合法的,且数据是2.333×10-1。

考试口诀:e前e后必有数,e后必为整数。

【知识点8】字符

字符数据的合法形式::

'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。

字符型和整数是近亲:

chara=65;

printf(“%c”,a);得到的输出结果:a

printf(“%d”,a);得到的输出结果:65

一般考试表示单个字符错误的形式:'65'"1"

字符是可以进行算术运算的,记住:'0'-0=48

大写字母和小写字母转换的方法:'A'+32='a'相互之间一般是相差32。

【知识点9】整型数据

整型一般是两个字节,字符型是一个字节,双精度一般是4个字节:

考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,

一样做题。掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就可以了。

【知识点10】转义字符

转义字符的考查:

在程序中inta=0x6d,是把一个十六进制的数给变量a注意这里的0x必须存在。

在程序中inta=06d,是一个八进制的形式。

在转义字符中,’x6d’才是合法的,0不能写,并且x是小写。

‘141’是合法的,0是不能写的。

‘108’是非法的,因为不可以出现8。

【知识点11】算术运算

算术运算符一共有+、—、*、/、%这五个。%符号两边要求是整数。不是整数就错了。

三种取整丢小数的情况:不是四舍五入是舍掉小数部分。

1、inta=1.6;

2、(int)a;

3、1/2;3/2;

【知识点12】强制类型转换

将一个运算对象转换成指定类型,格式为(类型名)表达式

一定是(int)a不是int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b的区别。前是把a+b转型,后是把a转型再加b。

【知识点13】赋值

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

复合赋值运算符:注意:a*=m+2是a=a*(m+2)

自加、自减表达式:假设a=5,++a(表达式的值为6),a++(表达式的值为5);

j=a++;等价于j=a;a=a+1;而j=++a;等价于a=a+1;j=a;。

考试口诀:++在前先加后用,++在后先用后加。

【知识点14】逗号运算

逗号表达式:优先级别最低;表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

【知识点15】数制转换

一定要记住二进制如何转换成十进制。

八进制是没有8的,逢8进1,018的数值是非法的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yyfangchan@163.com (举报时请带上具体的网址) 举报,一经查实,本站将立刻删除