您好,欢迎访问三七文档
CCCC语言基本语法基本语法介绍预处理命令把小写字母转换成大写字母chara,b;a='x';b='y';a=a-32;b=b-32;printf(%c,%c\n%d,%d\n,a,b,a,b);复合赋值语句有利于编译处理,能提高编译效率并产生质量较高的目标代码C语言中的空语句:while(getchar!='\n');//这里包含了空循环体scanf与printf:scanf输入数据可以指定数据字段的宽度,但不能规定数据的精度,而printf则可以printf(“%3,2f”,a);//这里的3.2表示按实数形式输出,输出宽度为3,如果输出的数不足3,位,则按实际宽度输出,四舍五入保留两位小数预处理命令宏定义(1)不带参数的宏定义#definePI3.1415926//不用加分号(2)带参数的宏定义#defineMAN(a,b)((a)(b)?(a):(b))文件包含命令#includefilename.h或#include“filename.h”表示在存放C库函数头文件所在目录中去查找,而不再源文件目录去查找“”表示首先在当前的原文家目录中查找,若未找到才到存放C库函数头文件所在目录中去找。在实际编程中,有些公用的符号常量单独组成一个文件,在其他文件的开头用包含命令包含该文件即可使用。条件运算符(1)三个表达式的类型可不同,条件表达式值取较高的类型(2)条件运算符的结合方向是从右至左(3)条件运算符可嵌套自定义函数的相关知识变量的存储类型自定义函数:函数分为声明部分和执行部分函数的声明与定义:函数的声明在程序的数据声明部分(文件包含命令和main函数之间),函数的定义的位置可以在调用它的函数(一般在main函数之外)之前也可以在调用它的函数之后,也可以位于其他的源程序模块中。使用函数的优点:(1)使用函数可以控制任务的规模(2)使用函数可以控制变量的作用范围(3)使用函数可以可以由多人协作完成程序的开发(4)使用函数可以重新利用已有的、调试好的、成熟的程序模块(函数)局部变量和全局变量局部变量:在语句块内定义的变量称之为局部变量,又称为内部变量,仅在定义它的语句块内有效,并且拥有自己独立的存储空间。全局变量:在函数之外定义的变量成为全局变量。如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量不起作用,即被“屏蔽”。说明:(1)一个函数中既可以使用本函数的局部变量,又可以使用有效的全局变量。(2)利用全局变量可以增加函数联系的渠道,从而得到一个以上的返回值(3)全局变量一般第一个字母用大写表示(4)建议在一般情况下不要使用全局变量,因为全局变量一直占用存储空间,降低ile函数的通用性和程序的清晰性,容易出错。变量的存储类型:(1)自动型变量autointi=1;auto关键字只能用于定义局部变量,为默认的类型(2)寄存器型变量register(3)静态型变量static该变量只有在所在的函数内有效,退出该函数时该变量的值仍然保留,下次进入后仍然可以使用。退出程序时值才消失。(4)外部型变量externC程序在编译时当遇到extern,先在本文件中找外部变量的定义,如果找到,就在本文件中扩展作用域,如果找不到就在连接时从其他的文件中找到外部变量的定义如果找到,就将作用域扩展到本文件,否则按出错处理。在高级语言的学习中一方面应数量掌握该语言的语法,因为它是算法实现的基础,另一方面必须认识到算法的重要性,加强思维训练,以便写出高质量的程序。getchar()getch()getche()函数和putchar()putch()函数putchar(c)putch(c)把单个字符c输出到标准设备上getchar()getche()getch()函数用于从终端输入数据getchar()按enter键之后才接受数据,只接收第一个数据getch()和getche()在输入一个字符后立刻被函数接受,不用按enter键。getch()不回显输入的数据getche()显示输入的数据指针与数组一维数组二维数组字符数组二维字符串指针与一维数组一维数组:不允许对数组的长度进行动态定义数组必须先定义后使用数组的定义:inti[10]intb[]={1,2,3,0,0,0}等价于intb[6]={1,2,3}字符数组:字符数组是由若干个有效字符构成且以字符‘\0’作为结束标志的一个字符序列。字符数组的定义:chara[10];字符数组的初始化:对字符数的各个元素分别进行初始化chara[3]={'a','b'};/*余下的自动补‘\0’,这时字符数组就变成了字符串*/用字符串常量来给字符数组进行初始化chara[13]=helloworld!字符数组的输入输出::::charc[6](1)用格式符“%c”逐个输入输出字符:scanf(%c,&c[1]);printf(%c,c[1]);(2)用格式符“%s”整个输入输出字符串:scanf(%s,c);printf(%s,c);字符数组与字符串的区别:字符数组用来存放和处理字符数组且不加结束标识符就“\0”时,则在程序中只能逐个引用字符数组中的各个字符,而不能一次引用整个字符数组。而字符串则可以对其引用整个数组。其操作的方式一个是数组元素,一个是数组名字符串处理函数:(1)输入字符串函数char*gets(char*str);//stdio.h在使用gets()输入字符串时,可以包括空格在内的字符,在回车时,自动骄傲字符串结束标志‘\0’赋予字符数组的最后一个元素。(2)输出字符串函数intputs(char*str);//stdio.h在使用puts()输出字符串时,将字符串结束标志‘\0’转换成‘\n’输出。(3)字符串复制函数char*strcpy(char*strl,char*str2);//string.h不能使用‘=’赋值语句对字符数组整体赋值,只能使用strcpy()处理。(4)字符串比较函数intstrcmp(char*str1,char*str2);//string.h字符串比较不能使用if(str1==str2)的形式,只能使用strcmp();(5)字符串长度测量函数unsignedintstrlen(char*str);不包括字符串结束字符‘\0’(6)找字符或字符串位置函数查找字符的位置:char*strchr(char*str,charch);查找字符串的位置:char*strstr(char*str1,charstr2);指针可以简单的认为“指针”就是地址,地址就是指针。一个变量的地址只能使用&符号获得。指针变量:在C语言中指针被用来标识号内存单元的地址,如果把这个地址用一个变量来保存,则这中噢噢那个变量就成为指指针变量。如指针变量pi只想变量i,那么pi就表示变量i的地址,*pi就表示变量i的值,pi=&i。i=3与*pi=3等价指针变量的使用:先定义,后使用。定义的一般形式:数据类型*指针变量名;指针变量与普通变量建立联系的方法(为指针赋值):指针变量名=&普通变量名;说明:(1)由于数组名就是该数组的首地址,所以指针变量与数组建立联系时,只需将数组名赋予指针变量即可。(2)当指针变量没有赋值时,可以赋空指针NULL或0,不能间接引用没有初始化或值为NULL的指针。(3)&取地址运算符,*取只想的值的运算符。指针变量的引用方式:(1)*指针变量名:表示所指变量的值。(2)指针变量名:表示所指变量的地址使用指针作为函数的参数:#includestdio.hvoidswap(int*x,int*y);voidmain(){inta=3,b=4;printf(main1:a=%d,b=%d\n,a,b);swap(&a,&b);printf(main2:a=%d,b=%d\n,a,b);}voidswap(int*x,int*y){inta;printf(swap1:a=%d,b=%d\n,*x,*y);a=*x;*x=*y;*y=a;printf(swap2:a=%d,b=%d\n,*x,*y);}指针的运算:指针的运算通常只限于:+,-,++,–(1)指针变量加减一个整数的算术运算:表示通过加减运算获取新的内存空间的地址:p+1,p+c*i(c表示指针变量所指向的数据类型所占用的字节数)(2)两个指针变量之间的算术运算:只有减法运算,不能进行加法运算,表示两个指针变量之间的变量个数。(3)两个指针变量之间的比较:==,!=,,,=,=,结果为真(1)或假(0)(4)指针变量可以指向一个空值有效数据的指针补指向0单元,对NULL指针不能使用间接引用。空指针与未对指针变量p赋值是两个不同的概念:空指针指向0单元,而未对指针赋值表示该指针可能指向一个未知的值。指针与一维数组:指向一维数组的指针变量:指向一维数组的指针成为数组指针。赋值:p=&a[0]或者p=a获取数组元素a[i]的值:*(a+i)指针表示法比下标表示法快的原因:在C编译时,数组元素a[i]被解释成*(a+i),即按照数组的首地址加上指针相对位移量得到要找的元素的地址,然后找出该单元的内容。指向一维数组元素的指针变量:*p=&a[6];表示p是指针变量,将a[6]的地址赋予p。指向字符串的指针变量:字符串是特殊的一维数组,不过,指向字符串的指针变量的使用方法与指向一般数组的指针变量有所不同。字符指针:char*sp=Helloworld!!!;指向字符数组的字符指针:charstr[]=Helloworld!!!,sp=str;二维数组:定义:数据类型数组名[行数常量表达式][列数常量表达式];运算:赋值运算:a[2][1]=3;取地址预算:&a[2][3];算术运算:a[1][0]=a[0][0]+1;其他运算:a[i][j]0;初始化:(1)按行初始化inta[2][3]={{1,2,3,},{4,5,6,}};(2)按顺序初始化inta[2][3]={1,2,3,4,5,6};(3)使用关键字static赋值当定义静态存储数组时,如果没有赋初值,则系统自动将全部元素赋予0值或‘\0’值。(4)对部分元素赋初值数组在对部分元素赋初值时,如果后面的数组元素不赋初值,系统会对未赋值的所有数组元素自动赋予0值或‘\0’值。(5)全部赋值时数组第一维长度可以省略inta[][3]={1,2,3,4,5,6}(6)缺省数组第一维长度的部分赋值应使用分行赋值方式明确指定行数inta[][2]={{1,},{1,2,},{2}}(7)通过键盘输入(8)通过赋值语句逐个元素赋初值二维数组作函数的参数:二维数组作为函数的参数时,时地址传递方式,在被调函数中对数组元素的改变,会影响到主调函数,对二维数组而言,在主调函数和被调函数中使用数组的方法都一样。在定义被调函数时,二维数组的形参的第一维大小可有可无,有第一维大小时,可以可以时任意大小;而第二维的大小必须有,并且和主调函数中相应的二维数组的第二维的大小一致。二维字符串:求四个字符串中最小字符串的问题:#includestdio.hvoidminstring(chars[][20],intn,charmin[]);voidmain(){inti,j;chara[4][20],min[20];for(i=0;i4;i++){gets(a[i]);}minstring(a,4,min);printf(“minstringis:%s\n”,min);}voidminstring(chars[][20],intn,charmin[]){chari;strcpy(min,s[0]);for(i=0;in;i++)if(strcmp(min,s[i])0)strcpy(min,s[i]);}结构体变量与共用体说明:(1)在声明结构体时,系统不给该结构体分配内存空间,仅是定义了一种特定的数据构造类型,它制定了这种结构体使用内存的模式。(2)结构体可以在函数内部定义,也可以在函数外部定义,其作用域是不同的。如在函数内声明
本文标题:C语言基本语法
链接地址:https://www.777doc.com/doc-3500872 .html