C语言基础必须掌握的 知识点
C程序的结构和格式。
1main函数
任何一个有效的程序都有且只能有一个main()函数,它的地位相当于程序的主体,就像大树的树干,而其他函数都是为main()服务的,就像大树树干分出的枝干。
main函数具有以下3个特点:
C语言规定必须用main作为主函数名。其后的一对圆括号中间可以是空的,但不能省略。
程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。
一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。
2.程序中的注释
在一个C程序中放在符号/**/之间的内容,称为对程序的注释。注释是对程序的说明。编写注释时应遵循以下4条规则:
符号/**/必须成对出现,/*两者之间不可以有空格。
注释可以用英文、中文,可以出现在程序中任意合适的地方。
在注释之间不可以再嵌套/**/。例如,/*/**/*/形式是非法的。
注释从/*开始到最近的一个*/结束,其间的任何内容都被编译程序忽略。换句话说,注释只是为了更好地看懂程序而做的标记,不对程序产生任何影响。
3.源程序的书写格式
C程序书写格式的基本习惯有:
一行内可以写几个语句,一个语句可以分写在多行上。
每个语句和数据定义的最后必须由一个分号结束(分号是C语句的一部分,不是语句之间的分隔符)。
4C语言的风格
C语言的风格主要有以下几个方面:
          C语言简洁紧凑,使用方便灵活
          运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算;
          数据结构丰富,具有现代化语言的各种数据结构;
          用函数作为程序模块以实现C程序的模块化;
          C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;
          生成目标代码质量高,程序执行效率高;
          C语言写的程序可移植性好(与汇编语言比)。
5.标识符
所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。
C语言合法标识符的命名规则是:
标识符由字母、数字和下划线组成;
第一个字符必须为字母或下划线;
大写字母与小写字母被认为是两个不同的字符;
C语言规定了一个标识符允许的字符个数,即标识符的前若干个字符有效,超过的字符将不被识别。
C语言的标识符可分为以下3类:
1)关键字
C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如,intdoubleifelsewhilefor等。
2)预定义标识符
即预先定义并具有特定含义的标识符。
3)用户标识符
由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。
二级C语言赋值表达式。
1.赋值运算符
1)赋值运算符
赋值运算符的符号为“=”,由赋值运算符组成的表达式称为赋值表达式。
【功能】先求出右边表达式的值,然后把此值赋给赋值号左边的变量。
【格式】变量名=表达式
【说明】在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋的那个数据。
2)赋值表达式
【格式】<变量><赋值运算符>(表达式)
例如a=6+4就是一个赋值表达式。
使用赋值表达式时应注意以下6个事项:
赋值运算符的优先级别只高于逗号运算符,比任何其他运算符的优先级都低,且具有自右向左的结合性。
赋值运算符不是数学中的等于号,而是进行赋予的操作。
赋值表达式x=y的作用是,将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉。
赋值运算符的左侧只能是变量,不能是常量或表达式。
赋值运算符右边的表达式也可以是一个赋值表达式。
C语言中,“=”号被视为一个运算符,x=78是一个表达式。
3)赋值语句
【格式】<变量><赋值运算符>(表达式);
【说明】在赋值表达式的尾部加上一个;号,就构成了赋值语句,也称表达式语句。
例如,a=6+4;就是一个赋值语句。
小提示
赋值语句必须在最后出现分号,分号是语句中必不可少的部分;C语言规定赋值运算符的左边不能为常量或表达式。
2.复合赋值表达式
在赋值运算符之前加上其他运算符可以构成复合赋值运算符。
C语言中共有10种复合赋值运算符,其中与算术运算有关的复合运算符有:+=-=*=/=、-=(注:两个运算符之间不能有空格)。复合赋值运算符的优先级与赋值运算符的优先级相同。
3.赋值运算中的类型转换
如果赋值运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧表达式求得的数值按赋值运算符左边变量的类型进行转换,也可以用强制类型转换的方式人为地进行转换后将值赋给赋值运算符左边的变量。这种转换仅限于数值数据之间,通常称为赋值兼容
C语言的表达式中,如果运算符两边的整型类型不相同,将进行类型之间的转换。转换规则如下:
当赋值运算符左边的变量为短整型变量,右边的值为长整型变量,短整型变量只能接受长整型变量低位上两个字节中的数据,高位上两个字节中的数据将丢失。
当赋值运算符左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数值的范围不应超出左边变量可以接受的数值范围。同时注意,这时负数将转换为正数。
当赋值运算符左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上。这时若符号位为1,将按负数处理。
字符串处理函数
1、将格式化数据写入字符串:sprintf
int sprintf( char *buffer, const char *format, ... );
将数据打印到buffer
例如:char result[100];
int num = 24;
sprintf( result, "%d", num );
例如:char string[50];
int file_number = 0;
sprintf( string, "file.%d", file_number );
file_number++;
output_file = fopen( string, "w" );
又例如:char result[100];
float fnum = 3.14159;
sprintf( result, "%f", fnum );
2、字符串长度查询函数: strlen
int strlen(const char *s);
3、字符串复制函数:strcpystrncpy
char *strcpy(char *dest, const char *src);
4、字符串连接函数: strcat
char *strcat(char *dest, const char *src);
5、字符串比较函数: strcmpstrncmpstricmpstrnicmp
字符串比较函数strcmp(分大小写)
int strcmp(const char *s1, const char *s2);
Return Value
Return value
Explanation
less than 0
str1 is less than str2
equal to 0
str1 is equal to str2
greater than 0
str1 is greater than str2‘‘
字符串搜索函数: strcspnstrspnstrstrstrtokstrchr
6、查子串strstr
char *strstr(char *s1, char *s2);
查给定字符串在字符串中第一次出现的位置,返回位置指针
如果到,返回指针,指向s1中第一次出现s2的位置
如果不到,返回 NULL
pdest = strstr( string, str );
string中搜索str,返回strstring中第一次出现的位置
例如:char* str1 = "this is a string of characters";
char* str2 = "a string";
char* result = strstr( str1, str2 );
if( result == NULL ) printf( "Could not find ‘%s‘ in ‘%s‘n", str2, str1 );
else printf( "Found a substring: ‘%s‘n", result );
输出结果为:Found a substring: ‘a string of characters‘
7、搜索字符在串中第一次出现的位置strchr
pdest = strchr( string, ch );
string中搜索ch,返回strstring中第一次出现的位置
8、字符串部分拷贝 strncpy 字符串全部拷贝strcpy
char *strncpy(char *dest, char *src, int maxlen);
char *strcpy(char *dest, char *src);
将前 maxlen 个字符从src拷贝到dest
1)如果src中字符不足 maxlen 个,则连0’一起拷贝,0’后面的不拷贝
2) 如果src中字符大于等于maxlen个,则拷贝 maxlen个字符
9、字符串大小写转换函数: strlwrstrupr
补充:这些函数都要求 #include <string.h>
[二级C语言]自加、自减运算符和逗号运算。
1.自加运算符(++
使用自加运算符时应注意以下5个事项:
自加运算符++的运算结果是使运算对象增1。例如,i++相当于i=i+1
运算符++是单目运算符,运算对象可以是整型变量也可以是实整型变量,不能是常量或表达式。所以像++3(i+j++是不合法的。
用自加运算符构成表达式时,既可以是前缀形式,也可以是后缀形式。这两种形式对于变量来说,其结果都是加1,但对表达式来说其值是不同的。
运算符++的结合方向是自右向左
不要在一个表达式中对同一个变量进行多次诸如i++++i等运算。
2.自减运算符(--
使用自减运算符时应注意以下5个事项:
自减运算符--的运算结果是使运算对象减1。例如,i--相当于i=i-1
运算符--是单目运算符,运算对象可以是整型变量也可以是实整型变量,不能是常量或表达式。
用自减运算符构成表达式时,既可以是前缀形式,也可以是后缀形式。这两种形式对于变量来说,其结果都是减1,但对表达式来说其值是不同的。
运算符--的结合方向是自右向左
不要在一个表达式中对同一个变量进行多次诸如i----i等运算。
3.逗号运算符和逗号表达式
字符串拷贝函数strcpy作用
1)逗号运算符
,C语言提供的一种特殊运算符,称为逗号运算符。逗号运算符的结合性为从左到右。在所有运算符中,逗号运算符的优先级最低
2)逗号表达式
用逗号运算符将表达式连接起来的式子称为逗号表达式。
【格式】表达式1,表达式2,,表达式n
【说明】由于逗号运算符的结合性为从左到右,所以逗号表达式将从左到右进行运算。即先计算表达式1,然后计算表达式2,依次进行,最后计算表达式n,最后一个表达式的值就是此逗号表达式的值。
例如,表达式a=3*5,a*4先求解a=3*5,得a的值为15,然后求解a*4,得60。所以表达式最后的值为60