北考网

有关c语言的基础知识有哪些

时间:2023-06-08 12:27:01 文/孙小飞 知识北考网www.beiweimall.com

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编译系统将实型常量作为双精度来处理。

字符型数组:(一)字符常量:转义字符(\n——换行,\t——tab,\r——回车,\f——换页,\b——退格,\ddd——1到3位8进制的数代表的字符)

(二)字符变量:字符数据存储形式实际是以ASCII码存储。“%c”

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

C的运算符有以下几种:

1、算术运算符(+ - * / %)结合方向自左向右

2、关系运算符(> < =="">= <= !="">

3、逻辑运算符(! && ||)

4、位运算符(<>> ~ | ^ &)

5、赋值运算符(=及符号扩展赋值运算符)

6、条件运算符(? : )

7、逗号运算符( , )

8、指针运算符(* &)

9、求字节运算符(sizeof)

10、强制类型转换运算符((类型))

11、分量运算符( . ->)

12、下标运算符([])

13、其他

控制语句:

完成一定的控制功能。

1、if()~else~

2、for()~

3、while()~

4、do~while()

5、continue

6、break

7、switch

8、goto

9、return

字符数据的输入输出:

1、putchar()输入字符变量

2、getchar()只能接受一个字符

格式输入输出:

1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)

2、scanf(格式控制,地址列表)

数组

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

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

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

字符串处理函数:

1、puts()将一个字符串输出到终端

2、gets()从终端输入一个字符串到字符数组,并且得到一个函数值。

3、strcat()链接两个字符数组中的字符串。

4、strcpy()字符串复制函数。

5、strcmp()比较字符串作用。

6、strlen()测试字符串长度的函数不包括“\0”

7、strlwr()将字符串中的大写字母转换为小写字母。

8、strupr()将字符串中的小写字母转换为大写字母。

函数

(1)一个源程序由多个函数组成。

(2)C程序的执行从main()函数开始;

(3)所有函数都是平行的;

(4)函数分类;可以分为标准和自定义,还可以分为有参函数和无参函数。

函数定义的一般形式:

(1)类型标志符 函数名()

{

声明部分

语句

}

(2)类型标志符 函数名(形式参数列表)

{

声明部分

语句

}

关于形参和实参的说明:

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

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

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

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

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

函数的返回值:

希望通过函数调用使主调函数得到一个确定的值。

(1)函数的返回值是通过函数中的return语句获取的。

(2)函数值的类型;

(3)如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。

(4)如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。

(5)如不需要带回任何值,用void。

函数的调用:

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

被调用的函数的声明:

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

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

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

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

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

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

局部变量和全局变量:

(一)局部变量在一个函数内部定义的变量是内部变量,它只是在本函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰;形式参数也是局部变量;在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合句也可以称为“分程序”或“程序块”;

(二)全局变量,在函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道,一般不再必要时不要使用,他在程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。还要注意若果同一源文件中,外部变量和局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,不起任何作用。

变量的存储类别:

(变量值存储时间)动态存储方式,在程序运行期间进行分动态的分配存储空间的方式,静态存储方式是指在程序运行期间分配固定的存储空间的方式;存储空间分为程序区、静态存储区和动态存储区;全局变量全部放在静态存储区中,程序开始时分配空间,完毕时释放;动态存储区中存放以下数据:

1、函数形式参数;

2、自动变量;

3、函数调用时的现场保护和返回地址;在C语言中每个变量和函数都有两个属性,是数据类型和数据存储类型,存储类别是数据在内存中存储的方式。

存储方式分为静态和动态存储类,具体包含有四种:自动的(auto),静态的(static),寄存器的(register),外部的(extern),如果不加以声明,就自认为是auto型就会自动分配存储空间属于动态存储方式。

Static声明局部变量是在函数调用结束后不消失而保留原值,即占用存储单元不释放,在下一次调用该函数时,该变量已有值,就是上次函数调用结束时的值。其中需要说明的是在定义局部变量不赋初值的话,则静态局部变量编译时自动赋值为0或者空字符,虽然静态局部变量在函数调用结束后仍然存在,但是其他函数不能引用它的。静态局部变量主要用在当初始化后,变量只是被引用而不改变其值。

Register变量是C语言中允许将局部变量的值放在CPU中的寄存器中需要时直接从寄存器中取出来参加运算,不必再到内存中提取,但是计算机系统中寄存器数量有限,不能任意定义任意多的存储器,局部静态变量不能定义为寄存器变量。

Extern声明外部变量,用以扩展外部变量的作用域。在一个文件中,如果定义之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量做外部变量声明。在多文件中,也可以采用extern声明的办法进行外部变量声明。有时希望某些局部变量只限于被本文件引用,而不能被其他文件引用,这时就可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。

Static来声明一个变量的作用有二个,一个是在声明对局部变量时。则为该变量分配的空间在整个程序执行期间始终存在;一个是在对全局变量声明中,该变量的作用域仅限于本文件模块操作。

C语言的基础知识

各种数据类型所占字节的大小:

在32 位的系统上short 的内存大小是2 个byte;

int 的内存大小是4 个byte;

long 的内存大小是4 个byte;

float 的内存大小是4 个byte;

double 的内存大小是8 个byte;

char 的内存大小是1 个byte

C基本语法:

1.输入输出函数

printf(格式控制字符串,输出列表) //格式控制字符串可由格式字符串(以%开头)和非格式字符串(原样输出)组成.

scanf(格式控制字符串,地址表列)

put) //字符数据的输出 等同与 printf(%c,.) 位于中

get) //从键盘输入中读取一个字符。scanf(%c,&mchar)

2.逻辑运算

!(非) ,&&(与), ||(或)

3.二维数组

定义: 类型说明符 数组名[常量表达式1][常量表达式2]

注:a.存储器单元是一维线性排列的。是按行存放的。

b.对于全部元素赋初值,则数组第一维的长度可以省略,但是第二维不能省。如:int a[][3]= {1,2,3,4,5,6}

c.可以只对部分元素赋初值,没赋初值的'元素自动取0值。

d.一个二维数组可以分解为一个多个一维数组。例:a[3][4]可分解为三个一维数组,其数组名分别为a[0],a[1],a[2],而这个

一维数组都有4个元素。如一维数组a[0]有元素为:a[0][0],a[0][1],a[0][2],a[0][3]

4.字符数组

c中没有字符串数据类型,是用字符数组来表示字符串变量的。字符串总是以'\0'作为串结束符,所以,字符串就是一种以‘\0’结束的字符数组。

注:在求字符串长度时,不包含结束符'\0'。但是sizeof却要包含。如:

char c[]="string";

char c1[]={'s','t','r','i','n','g','\0','\0'};

printf("%d ",sizeof(c)); // 7 ,默认在string后加'\0'

printf("%d ",sizeof(c1)); //8,对于字符数组只能自己加结束符

printf("%d ",strlen(c)); //6 求字符串长度时,不包含结束符'\0'

printf("%d ",strlen(c1)); //6 求字符串长度时,不包含结束符'\0'

常用的字符串处理函数(在stdio.h中与string.h中):

puts(字符数组名)---把字符数组中的字符串输出到显示器。

gets(字符串数组名)--从输入设备得到字符串。

strcat(字符数组名1,字符数组名2)--把字符数组中2中的字符串连接到字符数组1中字符串的后面,并删除字符串1后的串标志"\0";

strcpy(字符数组名1,字符数组名2)--把字符数组2中的字符串复制到字符数组1中,串结束标识'\0'也一同复制。

strcmp(字符数组名1,字符数组名2)--按照ASCII码顺序比较两个数组中的字符串,并由函数返回比较结果。

strlen(字符数组名)---返回字符实际长度(不含字符'\0')

5.指针与一维数组

注:c语言中规定,数组名代表第一个元素的地址,是指针常量。数组a的首地址可用&a[0]表示,或a表示。

对于如:int a[10],*p;

p=a;或 p =&a[0];

或定义为:int a[10];

int *p = a;

小结:指针与一维数组的关系

&a[i],&p[i],a+i,p+i 表示数组元素a[i]的地址

a[i],*(a+i),*(p+i),p[i] 表示元素a[i]的内容。

p++,p-- 表示使p后移或前移一个元素的存储空间

*p++,*p-- 表示先取p所指对象*p,然后使p后移或前移一个元素的存储空间。

(*p)++,(*p)-- 使p所指对象的值加1或减1.相当于:*p = *p + 1;

*++p;*--p; 取指针变量p加1或减1后的内容。相当于:*(++p),*(--p);

++*p,--*p; 使p所指向的变量的内容加1或减1

6.动态申请存储空间

内存申请库函数: void *malloc(size); 例: int *p = (int *) malloc(10 * sizeof(int));

内存释放库函数: void free(p); free(p);

7.文件包含

一个源程序通过#include命令把另外一个源文件的全部内容嵌入到源程序中来。在编译时并不是作为两个文件连接,而是作为一个源程序编译,得到一个目标文件。

格式:#include "文件名"

注:#include "file.h" 首先在使用包含文件的源文件所的目录查找file.h文件,若没有找到指定的文件,再到系统指定的标准目录查找。

#include 仅在编译系统指定的标准目录查找文件file.h.

8.二维数组和指针

二维数组中的行、圾元素的地址

a、&a[0] 二维数组首行(第0行)的首地址。

a[0]、*(a+0)、*a 0行0列元素地址

a+1 1行首地址

a[1],*(a+1) 1行0列元素地址。

a[i]+j、*(a+i)+j 、&a[i][j] 第i行第j列的首地址

*(a[i]+j)、*(*(a+i)+j)、a[i][j] 第i行第j列元素值

c语言入门基础知识

数据类型----C的数据类型包括:整型、字符型、实型或浮点型、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

常量与变量----常量其值不可改变,符号常量名通常用大写。变量是以某标识符为名字,其值可以改变的量。变量在编译时为其分配相应存储单元。

数组----C++语言代码如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。

指针----如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,指针不仅可以是变量的.地址,还可以是数组、数组元素、函数的地址。

字符串----C语言的字符串其实就是char型数组,使用字符型并不需要引用库,但是使用字符串就就需要C标准库里面的一些用于对字符串进行操作的函数。它们不同于字符数组。

文件输入/输出----在C语言中,输入和输出是经由标准库中的一组函数来实现的。标准输入/输出有三个标准输入/输出是标准I/O库预先定义的:stdin标准输入、stdout标准输出、stderr输入输出错误。

运算----C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。

关键字----又称为保留字,就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等标识符。由ANSI标准定义的C语言关键字共32个:

auto double int struct break else long switch

case enum register typedef char extern return union

const float short unsigned continue for signed void

default goto sizeof volatile do if while static inline

restrict _Bool _Complex _Imaginary _Generic

相关文章

c语言基础知识大全2023-06-17 06:46:36

关于c语言程序设计知识点有哪些2023-06-15 03:15:41

c语言基础知识最新大全2023-06-10 22:13:01

关于c语言基础知识教程2023-06-02 17:35:37

c语言的知识大全2023-06-03 16:12:36

c语言基础知识入门大全2023-06-12 18:20:18

上海对外经贸大学和北京交通大学(威海校区)对比哪个好(排名分数线区2024-03-31 16:25:18

河北高考排名237950名物理能上什么大学(能报哪些学校)2024-03-31 16:19:23

山东城市建设职业学院在山东招生人数和招生计划 多少人2024-03-31 16:15:16

上海农林职业技术学院在湖南招生人数和招生计划 多少人2024-03-31 16:12:52

吉林农业科技学院在湖南招生人数和招生计划 多少人2024-03-31 16:09:19

安徽高考多少分可以上云南经贸外事职业学院 招生人数和最低分2024-03-31 16:04:52

恐龙那些知识最新2023-06-02 05:54:34

怎样养狗知识大全2023-06-07 00:38:18

中华鲟鱼知识最新大全2023-06-13 11:28:19