扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。
创新互联网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了网站建设、成都网站设计,成都网站设计,1元广告,成都做网站选创新互联,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。
您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。
C 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。
函数还有很多叫法,比如方法、子例程或程序,等等。
C 语言中的函数定义的一般形式如下:
在 C 语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:
以下是 max() 函数的源代码。该函数有两个参数 num1 和 num2,会返回这两个数中较大的那个数:
创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。
当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。
调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。例如:
如上把 max() 函数和 main() 函数放一块,编译源代码。当运行最后的可执行文件时,会产生下列结果:
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
当调用函数时,有两种向函数传递参数的方式:
默认情况下,C 使用 传值调用 来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。
c语言知识点有:
1、C语言程序是由多个函数构成的。
2、每个C语言程序中有且只有一个main函数。
3、C语言不使用行号,无程序行的概念。
4、程序中可使用空行和空格。
5、C语言程序格式常用锯齿形书写格式。
6、C语言程序中可加任意多的注释,注释形式/*……*/,并且注释形式不能嵌套,即不能注释里面又有另一个注释。//行注释是C++当中新增加的内容。
7、引用C语言标准库函数,一般要用文件包含预处理命令将其头文件包含进来。
8、用户自定义的函数,必须先定义后使用。
9、变量必须先定义后使用。
10、变量名,函数名必须是合法的标识符,标识符习惯用小写字母,C语言是字母大小写敏感的语言。
11、不能用关键字来命名变量和函数。
12、C语言的语句都是以分号结尾的。
13、计算机中使用的进制数是二进制数,而不是十进制数,因为二进制只有两个数码,运算简单便于硬件实现,同时二进制便于逻辑运算。
将十进制数转换成二进制数应分为整数部分转换和小数部分转换,整数部分转换可采用基数除法来实现,小数部分转换可采用基数乘法来实现。八进制和十六进制也是C语言中经常表示数据的进制,因为它们与二进制之间的转换非常方便,但要注意他们不是计算机中使用的进制。
14、机器数的表示形式有原码、反码和补码几种形式,计算机中通常使用补码的形式来表示一个数,因为补码运算可以连同符号位一起参与运算,这便于运算器的设计与实现。
C语言知识要点——转给那些还没把书看完的同志们
来源: 李志远的日志
1.C源程序的框架
尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。
2.C语言源程序的书写规则:
(1)C源程序是由一个主函数和若干个其它函数组成的。
(2)函数名后必须有小括号,函数体放在大括号内。
(3)C程序必须用小写字母书写。
(4)每句的末尾加分号。
(5)可以一行多句。
(6)可以一句多行。
(7)可以在程序的任何位置加注释。
3.语句种类
语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。
(1)流程控制语句
流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。
(2)表达式语句
表达式语句的形式是:表达式;,即表达式后跟一分号";",分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。
(3)函数调用语句
函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。
(4)空语句
空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。
(5)复合语句
复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。
4.运算符
用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。
根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。
根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。
5.表达式
表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。
表达式的种类有:
算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号表达式(顺序表达式)、条件表达式、指针表达式。
6.数据的输入/输出
C语言本身没有输人/输出语句,数据的输入/输出是通过调用库函数来实现的。
第二章 数据类型知识点
划分数据类型的意义是编译系统对每个不同类型的数据在内存中分配的字节数不同,不同类型的数据可以按规定参加不同类型的运算。
1.C语言的数据类型
数据类型有:整型、字符型、实型单精度型、双精度型、构造类型数组类型、结构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是C语言中的基本类型。
2.各种类型数据的定义方法
定义形式:数据类型 变量名1,变量名2,......变量名n;
3.常量与变量
(1)常量——在程序执行期间其值不变的量。它不能被赋值。
(2)变量——在程序运行期间其值可以改变的量。
4.各种类型数据的混合运算
各类数据运算前会自动转换成同一类型。规律如右图示:从右向左的箭头表示必定的转换,如float型数据运算前化成double型,以提高运算精度,结果也为double型,short或char型数据运算前化成int型,结果也为int型;从下向上的箭头表示转换方向是向级别高的靠拢。
5.强制类型变换
当我们需要对数据进行类型变换,而机器又不能自动完成时,就要用强制类型变换,形式为:(数据类型符)(被转换对象)。
第三章 选择知识点
C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。
1.if语句的三种形式:
(1) if(表达式)语句;
(2) if(表达式)语句1;
else语句2;
(3) if(表达式1)语句1;
else if(表达式2)语句2;
else if(表达式3)语句3;
...
else if(表达式n)语句n;
2.开关分支语句switch
(1)形式
switch(表达式)
{ case e1:语句1;break;
case e2:语句2;break;
case e3:语句3;break;
......
case en:语句n;break;
default :语句n+1;
}
(2)功能
当表达式的值等于e1时,执行语句1;
当表达式的值等于e2时,执行语句2;
......
当表达式的值等于en时,执行语句n;
当表达式的值与常量e1、e2......en谁都不等时,就执行default后的语句
第四章 循环知识点
循环就是在程序执行过程中,反复多次的执行同一段程序。C语言中有三种循环语句。
1.while循环语句
形式为:while(表达式)
{
循环体
};
执行过程是:先计算表达式的值,当表达式的值非0时就执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。
2.do-- while循环语句
形式为:do
{
循环体
} while(表达式);
执行过程是:先执行循环体一次,再判断表达式的值,当表达式的值非0时就再执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。
3.for循环语句
形式为:for(表达式1;表达式2;表达式3)
{ 循环体 }
4.三种循环语句的比较
三种循环语句可以完成同一件事,可任选其一。
使用while和do-- while循环时,要提前给循环变量赋初值。而for循环是在表达式1中赋初值的。
while循环和for循环都是先判断条件后执行循环体,有可能一次也不执行循环体,do-- while循环是先执行循环体,后判断条件,即循环体至少也得执行一次。for循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等。
5.循环嵌套
三种循环控制语句可以互相嵌套,即在一个循环体内部又可以出现另一循环,这种嵌套在理论上来说可以是无限的。注意必须是一个循环完整的套住另一个循环。
6.break语句
break语句只能出现在三种循环语句和switch多分支语句中,其作用是用来中断这四种语句的执行。当程序执行到break语句时,会跳出break语句所在的循环或switch分支,而直接执行紧跟在它们后面的语句。
7.continue语句
continue语句只能出现在三种循环语句中,当程序执行到continue语句时,其作用是提前结束本次循环,自动跳过循环体中后半部剩余的语句的执行,而直接回到循环条件判断。根据判断的结果决定是否继续执行下次循环。
8. goto 语句
goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处。使用格式为: goto 标号;利用goto语句与if条件语句配合,也可以实现条件循环。C语句允许在任何语句前添加标号,作为跳转目标,标号的构成是标识符后面加一个":"。
第五章 数组知识点
数组就是同类型的一批数据的集合,用一个变量名存放,区分各元素的办法是用下标。
1.一维数组
类型说明符数组名\[数组长度\];
(1)数组命名要符合标识符的命名规则。
(2)数组名后的括号必须是方括号,不能是圆括号。
(3)数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组。
(4)数组长度表示数组中元素的个数
(5)数组元素的下标从0开始数,所以最大下标是数组的长度减1。
2.多维数组(以二维为例)
类型说明符数组名\[第一维长度\]\[第二维长度\];
(1)数组命名要符合标识符的命名规则。
(2)数组名后的括号必须是两个方括号,定义时不能写成inta\[3,4\];。
(3)数组长度必须是整型常量表达式。
(4)第一维长度表示数组行数,第二维长度表示数组列数。
(5)每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所在的列,每一维的下标都从0开始数。
二维数组的初始化:C语言规定只有静态数组和外部数组才允许在定义时赋初值,赋初值形式如下:
static类型说明符数组名\[第一维长度\]\[第二维长度\]={初值表};
二维数组的引用:二维数组不能整体引用,要引用数组的单个元素,形式为:数组名\[下标\]\[下标\]和普通变量的使用无任何区别。
3.字符数组
C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组。
(1)字符数组的定义形式:char数组名\[数组长度\];
因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义:int数组名\[数组长度\];
(2)字符数组的初始化:给字符数组的初始化有两种方式,一种是用字符常量,另一种是用字符串。形式如下:
staticchar数组名\[数组长度\]={字符常量表};
staticchar数组名\[数组长度\]={字符串常量};
4.数组与函数
数组经常作为函数的参数,数组做函数的参数有两种形式,一是数组元素做函数的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址。
5.常用的字符串处理函数
C语言提供了一些处理字符串的标准函数,用以完成一些常见的操作。对以下几个函数要掌握其功能和调用形式。
(1)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注意定义数组时数组长度要足够大。
(2)puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上。
(3)strcat(字符数组名1,字符数组名2)此函数功能是将字符数组1中的'\\0'去掉后将字符数组2的内容连接到字符数组1的末尾。
(4)strcpy(字符数组名1,字符数组名2)函数功能是将字符数组2的内容(包括'\\0')拷贝到字符数组1中,字符数组2处也可以是字符串常量。strcpy函数可以实现拷子串。
(5)strcmp(字符数组名1,字符数组名2)函数功能是两个字符串(ASCII码)比大小。
(6)strlen(字符数组名)此函数功能是求字符串的长度,注意不包括'\\0'。
(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写。
(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写。
第六章 函数知识点
每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的基础工作就是函数的具体编写,C语言中的函数就相当于其它高级语言中的子程序。
1.函数的概念
函数就是一个数据加工厂,从函数外部接收数据,在函数内部加工处理,然后得到一个结果返回给外部的调用者。所以函数就是对语言功能的扩充,对函数的调用就是对功能的调用。
2.标准函数
各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一些基本的、常用的功能编成了函数,供大家使用方便。使用库函数时必须把它的头文件用#i nclude命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出。
3.自定义函数
C 语言也允许用户自己编写函数以实现C库函数中没有提供的功能,称作自定义函数。
4.定义函数
C语言规定每个函数都要独立定义,函数定义不能嵌套。
函数定义的形式:数据类型函数名(形参表)
形参说明语句序列
{ 说明语句序列
可执行语句序列 }
5.函数调用
函数调用的形式是: 函数名(实参表)。当实参表中有多个参数时,要用逗号隔开,若被调函数无参数,调用时小括号也不能省。函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处。
5.全局变量和局部变量
局部变量:在函数内部定义的变量称为局部变量,只在本函数中有效。
全局变量:在函数外部定义的变量称为全局变量,它的作用范围是从定义开始到本文件结束。
6.动态存储与静态存储
内存中的用户数据区分为动态存储区和静态存储区,动态存储区是指程序运行期间给变量临时分配存储单元,变量用完后立即释放单元的区域,动态存储区放的是函数的形参、自动变量、函数调用期间的现场保护数据和返回地址。
静态存储区是指程序运行期间给变量分配固定的存储单元,放的是全局变量和局部静态变量。
一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该说明这两种类型。
第七章 预处理知识点
对高级语言编译连接就是把源程序转换成机器语言,C语言在进行编译之前还要预先处理三件事:宏定义命令、文件包含命令和条件编译命令,统称为预处理命令,其特点是:
1.所有的预处理命令都放在程序的头部,以#开头,且#号后面不留空格。
2.预处理命令不是C的语句,行尾不加分号。
3.预处理命令是在编译预处理阶段完成的,所以它们没有任何计算、操作等执行功能。
4.预处理命令有所变动后,必须对程序重新进行编译和连接。
1.宏定义
宏定义命令的作用是给一些常用的对象重新命名,在程序中可以用宏名来引用这些对象,预处理时宏名会被代表的内容替换,此过程称为宏展开或宏替换。宏定义有两种形式:
2.文件包含
使用文件包含命令可以将另—个C源程序的全部内容包含进来,其形式为:
#i nclude <文件名>或#i nclude "文件名"
通常可以把经常用到的,带公用性的一些函数或符号等集合在...起形成一个源文件,然后用此命令将这个源文件包含进来,这样可以避免在每个新程序中都要重新键入这些内容。
3.条件编译
顾名思义满足条件时进行编译,为了解决程序移植问题,C语言提供了条件编译命令,它能使源程序在不同的编译环境下生成不同的目标代码文件。条件编译命令有3种形式。
第八章 指针知识点
1.什么是指针和指针变量?
指针就是内存地址,因为通过"地址"可以找到变量,所以内存"地址"形象的称为指针。
指针变量就是存地址的变量。在C语言中用一个变量存另一个变量的地址,那么就称这个变量为指针变量,指针变量的值就是地址。通常指针变量被简称为指针。
指针变量是有类型的,即指针值增1表示指向下一个数据,如整型数据在内存中占两个字节,它的指针变量增1是增两个字节。如实型数据在内存中占4个字节,它的指针变量增1是增4个字节。
2.怎样定义指针变量?
定义形式为:数据类型*指针变量名1,*指针变量名2......;
3.指针的有关运算
指针为内存地址是整数,可以进行一些算术运算、关系运算、赋值运算、特殊运算等,但要注意运算代表的实际意义。
4.指向数组的指针变量
(1)指向数组元素的指针变量定义形式为:inta\[10\];
int*p=a;
(2)指向一维数组的指针变量
定义形式为:inta\[3\]\[4\];
int(*p)\[4\];
p=a;
(3)指向字符串的指针变量
定义形式为: char*p="字符序列";
C语言中的字符串是以隐含形式的字符数组存放的,定义了指针变量p并不是将整个字符串都存放在p中了,而p中存放的是字符串的首地址。
5.指向函数的指针变量
一个函数在编译时被分配一个入口地址,这个地址就是函数的指针,可以用一个指针变量指向它。指向函数的指针变量定义形式为:
数据类型(*指针变量名);
6.指针变量做函数的参数
(1)指针作函数的参数可以传送地址,如数组的首地址,函数的入口地址等。
(2)指针作函数的参数也可以用地址方式传送数据。
7.返回值是指针的函数
即函数的返回值是内存的地址,利用这种方法可以将一个以上的数据返回给函数的调用者。定义形式如下:
数据类型*函数名(形参表)
8.指针数组
定义形式为:数据类型*数组名\[数组长度\];
数组中的每个元素都是指针类型的数据,这种数组被称为指针数组。
9.指向指针的指针
定义形式为:数据类型**指针变量名;
指向指针数据的指针变量称为指向指针的指针。
10.main函数的形参
main函数可以带两个形参,如:
main(argc,argv)
intargc;
char *argv\[\];
{
......
}
11.指向结构体的指针变量
结构体变量的指针就是该变量所占据的内存段的首地址。指向结构体的指针变量定义形式为:struct结构体类型名*指针变量名;
12.指向共用体的指针变量
共用体变量的指针就是该变量所占据的内存段的首地址。指向共用体的指针变量定义形式为:union共用体类型名*指针变量名;
替换了的字符时(这里为正中间的字符"4"),原来的字符己不复存在。
第九章 结构体与共用体知识点
结构体类型是C语言的一种构造数据类型,它是多个相关的不同类型数据的集合,相当于其它高级语言中的记录。
1.结构体类型定义
结构体类型的形式为:
struct结构体类型名
{ 数据类型成员名1;
...
数据类型成员名n;
}
2.结构体变量的定义
结构体变量有三种定义形式:
(1)先定义结构体类型,后定义结构体变量。
(2)定义结构体类型的同时定义结构体变量。
(3)不定义结构体类型名,直接定义结构体变量。
3.结构体变量的引用
(1)结构体变量的初始化:许多C版本规定对外部或静态存储类型的结构体变量可以进行初始化,而对局部的结构体变量则不可以,新标准C无此限制,允许在定义时对自动变量初始化。
(2)结构体成员的引用:由于C语言一般不允许对结构体变量的整体引用,所以对结构体的引用只能是对分量的引用,结构体变量中的任一分量可以表示为:结构体变量名·成员名
4.结构体与数组
C语言中数组的成员可以是结构体变量,结构体变量的成员也可以是数组。
结构体数组有三种定义形式:
(1)先定义结构体类型,后定义结构体数组。
(2)定义结构体类型的同时定义结构体数组。
(3)不定义结构体类型名,直接定义结构体变量。
5.结构体与指针
一方面结构体变量中的成员可以是指针变量,另一方面也可以定义指向结构体的指针变量,指向结构体的指针变量的值是某一结构体变量在内存中的首地址。
结构体指针的定义形式:struct结构体类型名*结构体指针变量名。
由结构体指针引用结构体成员的方法
6.用指针处理链表
结构体的成员可以是指针类型,并且这个指针类型就是本结构体类型的,这样可以构造出一种动态数据结构—成为链表。所谓动态数据就是指在编译时不能确定数据量的多少,而是在程序执行时才确定的数据,动态数据可以比较方便的进行数据插人或删除等操作。
7.结构体与函数
结构体变量的成员可以作函数的参数、指向结构体变量的指针也可以作函数的参数。虽然结构体变量名也可以作为函数的参数,将整个结构体变量进行传递,但一般不这样做,因为如果结构体的成员很多,或者有些成员是数组,则程序运行期间,将全部成员一个一个的传递,既浪费时间,又浪费空间,开销太大。
8.结构体与共用体
结构体变量中的成员可以是共用体,共用体变量中的成员可以是结构体。
共用体
为了节省存储空间,C语言允许将几种不同类型的数据存放在同一段内存单元,它们共用一个起始地址,称做共用体。
1.共用体类型定义
union共用体类型名
{ 数据类型成员名1;
...
数据类型成员名n;
}
2.共用体变量定义
(1)先定义类型,后定义变量。
(2)定义类型的同时定义变量。
(3)不定义类型名,直接定义变量。
3.共用体变量的引用
(1)共用体变量不能整体引用,只能引用其成员,形式为:共用体变量名·成员名
(2)共用体变量的成员不能初始化,因为它只能放一个数据。
(3)共用体变量存放的数据是最后放入的数据。
(4)共用体变量的长度是最大的成员的长度。
(5)可以引用共用体变量的地址、各个成员的地址,它们都是同一个地址。
(6)共用体变量不能当函数的参数或函数的返回值,但可以用指向共用体变量的指针作函数的参数。
(7)共用体变量的成员可以是数组,数组的成员也可以是共用体变量。
第十章 位运算知识点
位运算就是按二进制位进行操作的运算,运算的对象只能是整型或字符型,不能是实型。不同长度的变量进行位运算,系统会自动右对齐,而左端的不齐部分,对于无符号数左端补满0,对于有符号数则:正数左端补满0,负数左端补满1。
第十一章 文件知识点
操作系统是以文件为单位对数据进行管理的,任何一种计算机高级语言都要有和磁盘文件打交道的能力,否则该语言的功能充其量是算一算、显示显示而已。在C语言中没有单独的文件操作语句,所有对文件的操作都是通过库函数来完成的,所以本章的重点是学会使用有关文件操作的库函数。
1.文件的基本概念
2.文件类型指针
3.文件的操作
第六章
指针变量的本质是用来放地址,而一般的变量是放数值的。
int *p 中 *p和p的差别:
*p可以当做变量来用;*的作用是取后面地址p里面的数值
p是当作地址来使用。
*p++ 和 (*p)++的之间的差别:改错题目中很重要
*p++是 地址会变化。
(*p)++ 是数值会要变化。
三名主义:(考试的重点)
数组名:表示第一个元素的地址。数组名不可以自加,
他是地址常量名。(考了很多次)
函数名:表示该函数的入口地址。
字符串常量名:表示第一个字符的地址。
第七章
1一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者
是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是
说a+1是跳一列。
对a[3][3]的讨论。
1、a表示数组名,是第一个元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者
是a=a+2赋值的都是错误的。
3、a是二维数组名,所以它是行指针,也就
是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以对
它进行赋值操作,同时它们都是列指针,a[0]+1,
a[1]+1,a[2]+1都是跳一列。
5、注意a和a[0] 、a[1]、a[2]是不同的,它们的
基类型是不同的。前者是一行元素,后三者是一列元素。
二维数组做题目的技巧:
如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。
步骤一:把他们写成:
第一列 第二列 第三列
a[0]à 1 2 3 -第一行
a[1]à 4 5 6—第二行
a[2]à 7 8 9-第三行
步骤二:这样作题目间很简单:
*(a[0]+1)我们就知道是第一行的第一个元素往后
面跳一列,那么这里就是a[0][1]元素,所以是1。
*(a[1]+2)我们就知道是第二行的第一个元素往后面
跳二列。那么这里就是a[1][2]元素,所以是6。
一定记住:只要是二维数组的题目,一定是写成如
上的格式,再去做题目,这样会比较简单。
数组的初始化,一维和二维的,一维可以不写,
二维第二个一定要写
int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。
但int a[4][]={2,3,4}非法。
二维数组中的行指针
int a[1][2];
其中a现在就是一个行指针,a+1跳一行数组元素。
搭配(*)p[2]指针
a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组
元素。搭配*p[2]指针数组使用
还有记住脱衣服法则:
a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再
可以变成 *(*(a+2)+3)
1、顺序、分支、循环等基本语句;
2、char、int、double、float等基本数据类型;
3、带参数宏定义和函数的区别;
4、指针和数组的区别,尤其注意下指针数组和数组指针;
5、函数指针和指针函数;
6、结构体和联合体以及自定义类型typedef的应用;
7、printf、scanf、getchar、putchar、fopen、fclose、fgetc、fputc等基本库函数的应用;
8、malloc、calloc、realloc、free等内存管理函数的应用;
9、函数的声明和定义;
10、注意C语言的基本单位是函数;
还有很多,因为篇幅限制不能一一例举,但上面提到的10点都是很多考试和面试中经常出现的。
有时间可以看看这三本书《C和指针》、《C陷阱和缺陷》、《C专家编程》,C语言的大部分问题都可以在这三本书中找到答案,熟练掌握着三本书的内容再加上一些实际项目将没有人可以轻易用C语言的问题为难你。
计算机c语言的特性
C语言是世界上最流行、使用最广泛的高级程序设计语言之一。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言的主要特性有以下几种:
1、C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。
2、C是结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4、C语言适用范围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
5、C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性。
6、C语言创始人D.M.Ritchie6、C语言文件由数据序列组成:可以构成二进制文件或文本文件常用的C语言IDE有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc,xcode等。
计算机c语言的语法结构
1.顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构。
2.选择结构
选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的选择语句。
3.循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。
4.模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的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)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。
关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方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。
字符型和整数是近亲:
char a = 65 ;
printf(“%c”, a); 得到的输出结果:a
printf(“%d”, a); 得到的输出结果:65
一般考试表示单个字符错误的形式:'65' "1"
字符是可以进行算术运算的,记住: '0'-0=48
大写字母和小写字母转换的方法: 'A'+32='a' 相互之间一般是相差32。
【知识点9】整型数据
整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节:
考试时候一般会说,在16 位编译系统,或者是32 位系统。碰到这种情况,不要去管,
一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节就可以了。
【知识点10】转义字符
转义字符的考查:
在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x 必须存在。
在程序中 int a = 06d, 是一个八进制的形式。
在转义字符中, ’x6d’ 才是合法的,0 不能写,并且x 是小写。
‘141’ 是合法的, 0 是不能写的。
‘108’是非法的,因为不可以出现8。
【知识点11】算术运算
算术运算符一共有+、—、*、/、%这五个。%符号两边要求是整数。不是整数就错了。
三种取整丢小数的情况:不是四舍五入是舍掉小数部分。
1、int a =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 的数值是非法的。
【知识点16】位运算
会有一到二题考试题目。
C语言提供6种位运算符:按位求反~,按位左移,按位右移,按位与,按位异或|,按位或^。
总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。
异或运算的规则:0异或1得到1,0异或0得到0,1异或1得到0。可记为“相同为0,不同为1”。
在没有舍去数据的时候,左移一位表示乘以2;右移一位表示除以2。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流