C语言介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
例:任意输入两个数,按降序输出。
main( ) { 执行情况: 输入: int *p1,*p2,*p, a, b; 4,6 scanf ("%d,%d", &a,&b); 输出: p1=&a; p2=&b; a=4,b=6 if(a<b) max=6,min=4 { p=p1; p1=p2; p2=p; } printf ("a=%d,b=%d\n", a,b); printf("max=%d,min=%d\n", *p1,*p2); }
指针是C语言中的重要概念,也是C语言的重要特色。 使用指针,可以使程序更加简洁、紧凑和高效。
内存用户数据区 „„ 2000 2002 2004 3 6 9 „„ 2000 3010 „„ 变量 i 变量 j 变量 k
设: int i,j,k; i=3,j=6; k=i+j; (直接访问) i_pointer=&i; (间接访问)
(2)有参函数的定义 有参函数定义形式(一): 类型标识符 函数名(形 式参数列表) 形式参数说明; { 说明部分; 语句部分; }
int max(x,y) int x,y; { int z; z=(x>y)?x:y; return(z); }
有参函数定义形式(二): 类型标识符 函数名(类 型名 参数1,…,类型 名 参数n) { 说明部分; 语句部分; } int max( int x,int y) { int z; z=(x>y)?x:y; return(z); }
2.函数的定义
(1)无参函数的定义
无参函数的特点:只完成某些动作,不进行参数传递。 无参函数的定义形式: 类型标识符 函数名( ) { 说明部分; 语句部分 }
例:无参函数使用示例。
main( ) { printstar( ); printword( ); printstar( ); } printstar( ) /*定义无参函数printstar()*/ { printf("******************\n");} printword( ) /*定义无参函数printword()*/ { printf("This is an example\n");}
a[0] a[1] a[2] 2000 2002 2004
a[3]
2006
例:从键盘输入5个整数,将它们反序输出。
main() { int i; int nums[5]; for(i=0;i<5;i++) scanf("%d",&nums[i]); for(i=4;i>=0;i--) printf("%5d",nums[i]); }
变量 i_pointer
指针变量的定义
指针变量定义的一般形式: 类型 *标识符; 说明:标识符”是指针变量的名字;“类型” 表明该指针变量所指向的变量类型。
int i,j; int *pointer_1,*pointer_2; pointer_1=&i; pointer_2=&j;
指针变量的引用
(3)循环结构 循环结构由循环语句for、while和do...while来实现。 作为注释,应在它们的前面说明其功能,在循环条件判 断语句行的后面,说明循环继续条件的含义,如下所示。 1)for语句 for(变量初始化;循环条件;变量增值) { „„ }
2)while语句 while(循环条件) { „„ } 3)do...while语句 do { „„ } while(循环条件); 其它控制语句 goto, return
例:实参和形参的传递
main( ) {int a,b,c; scanf("%d%d",&a,&b); c=max(a,b); printf("max=%d\n",c); }
实际参数 形式参数
int max(int x,int y) { int z; z=(x>y)?x:y;return(z);}
ຫໍສະໝຸດ Baidu
五、指 针
指 针 法
main() {int *p,min,max,a[10]; for (p=a;p<a+10;p++) scanf(“%d”,p); p=a; min=max=*p; for (p=a+1;p<a+10;p++) {if (*p>max) max=*p; if (*p<min) min=*p; } printf(“max=%d,min=%d\n”,max,min); }
C语言的语句
与其它高级语言一样,C语言也是利用函数体中的可 执行语句,向计算机系统发出操作命令。按照语句功能 或构成的不同,可将C语言的语句分为五类。 1.控制语句 控制语句完成一定的控制功能。C语言只有9条控制 语句,又可细分为三种: (1)选择结构控制语句 if()~else~, switch()~ (2)循环结构控制语句 do ~ while(), for() ~ , while() ~ , break, continue
三、数组
1、特点:元素类型相同的一组数据。 2、定义格式: 定义一维数组的一般形式: 数据类型名 数组名[常量表达式]; 例如:int num[5]; float score[10]; 3、存储结构:顺序存储 (数组名代表首地址) 例:int a[4]; Loc(ai)=loc(a0)+i*一个元素所占空间 4、引用:数组名[下标] 下标:0~n-1的表达式,n为数组长度 5、字符串:多个字符 字符串常量:“hello!” 长度为7 字符串变量: char s[7]或 char *s;
3. 函数参数
几个相关术语: 函数调用:一个函数调用另一个函数。 主调函数、被调函数 有参函数:主调函数和被调函数之间有数据传递关系, 被调函数即有参函数。 无参函数:主调函数和被调函数之间无数据传递关系, 被调函数即无参函数。
4. 参数传递与函数返回值
C语言中参数值的传递为单向传递 。被调函数中 形参的值发生改变时,主调函数中实参的值不会随 之改变。 被调用函数只有一个结果需返回时,可通过函数 值返回到调用函数. 如需返回多个结果,要通过指针或数组类型的参 数名返回。或者使用全局变量。
int a[10],*p; p=&a[0]; //或p=a;这样p为指向数组元素的指针 则:p+i等价于a+i等价于&a[i] *(p+i) 等价于 *(a+i) 等价于 *&a[i],即a[i] 指针法 数组名法 下标法
下 标 法
main() {int I,min,max,a[10]; for (i=0;i<10;i++) scanf(“%d”,&a[i]); min=max=a[0]; for (i=1;i<10;i++) {if (a[i]>max) max=a[i]; if (a[i]<min) min=a[i]; } printf(“max=%d,min=%d\n”,max,min); }
一、C语言程序的总体结构 二、C语言的数据类型和语句 三、数组 四、函数 五、指针 六、结构类型与结构变量
一、C语言程序的总体结构
一个完整的C语言程序,是由一个main()函数(又称 主函数)和若干个其它函数结合而成的,或仅由一个 main()函数构成。 由main()函数构成的C语言程序。 main() { printf(“This is a C program.\n”); } 程序运行结果: This is a C program.
运行情况: 12 34 5 7 89 89 7 5
34
12
四、函数
C程序的结构由若干个C函数组成。 C函数是C程序的组成部分,是由完成一特 定任务的说明语句和执行语句组成的基本功 能单元。 C函数的功能相当于其它程序设计语言中的 一个程序模块,或一个子程序。
1.函数的分类
从使用角度分: 标准库函数:以程序库的形式直接提供给用户使用。 stdio.h……gets()、printf() math.h ……sin()、sqrt() 用户自定义函数:由用户自己建立定义。 从函数形式分: 无参函数:调用函数时主函数不将数据传送给被调函数 ,用于完成特定功能的操作。 如:c=getchar( )…… 有参函数:调用函数时在主调函数和被调函数之间有参 数传递。
p
p1 &a p2 &b
(a)
a 4 b 6
p
p1 &b p2 &a
(b)
a 4 b 6
本 案 例 的 处 理 思 路 是 : 交 换 指 针 变 量 num1_p 和 num2_p的值,而不是变量num1和num2的值(变量num1和 num2并未交换,仍保持原值),最后通过指针变量输出处 理结果。
二、 C语言的数据类型和语句
C语言提供的数据结构,是以数据类型形式出现的。具体 分类如下: 1.基本类型 分为整型、实型(又称浮点型)、字符型和枚举型四种。 2.构造类型 分为数组类型、结构类型和共用类型三种。 3.指针类型 4.空类型 C语言中的数据,有常量和变量之分,它们分别属于上述 这些类型。
指向数组元素的指针变量
当数组元素的类型和指针对象类型相同时,可以通 过给指针赋值为数组名,使指针指向数组元素。这样, 对数组元素的访问可以通过下标或指针法来访问。 int a[10],*p; p=&a[0]; //或p=a;这样p为指向数组元素的指针 则:p+i等价于a+i等价于&a[i] *(p+i) 等价于 *(a+i) 等价于 *&a[i],即a[i] 指针法 数组名法 下标法
例: 求两数的最 大值。注意 函数的定义 int max(x,y) 形式。
main( ) { int a,b,c; scanf("%d%d",&a,&b); c=max(a,b); printf("max=%d\n",c); }
int x,y; { int z; z=(x>y)?x:y; return(z); }
2. 函数调用语句 函数调用语句由一次函数调用加一个分号(语句结束 标志)构成。 例如,printf("This is a C function statement."); 3. 表达式语句 表达式语句由表达式后加一个分号构成。最典型的表 达式语句是,在赋值表达式后加一个分号构成赋值语句。 例如,num=5是一个赋值表达式,而num=5;却是一个赋 值语句。 4. 空语句 空语句仅由一个分号构成。显然,空语句什么操作也 不执行。例如,下面就是一个空语句: ;
&:取操作对象(内存单元)的地址 *:取指针对象的内容(动态存储单元的引用)
例:指针变量的引用
main() { 运行结果: int a,b; 100,10 int *pointer_1, *pointer_2; 100,10 a=100; b=10; pointer_1=&a; /*把变量a的地址赋给pointer_1*/ pointer_2=&b; /*把变量b的地址赋给pointer_2*/ printf(”%d,%d\n”, a , b); printf(”%d,%d\n”, *pointer_1 , *pointer_2);
5. 复合语句 把多个语句用括号{}括起来组成的一个语句称复合语 句。 在程序中应把复合语句看成是单条语句,而不是多 条语句,例如
{ x=y+z; a=b+c; printf(“%d%d”,x,a); }
是一条复合语句。复合语句内的各条语句都必须以分 号“;”结尾,在括号“}”外不能加分号。
C语言的关键字 C语言的关键字共有32个,根据关键字的作用,可 分其为数据类型关键字、控制语句关键字、存储类型关键 字和其它关键字四类。 (1)数据类型关键字(12个):char, double, enum( 枚举类型) , float, int, long, short, signed, struct, union, unsigned, void (2)控制语句关键字(12个):break, case, continue, default(“其他”分支), do, else, for, goto, if, return, switch多分支选择, while (3)存储类型关键字(4个):auto(声明自动变量) , extern(声明引用变量), register(寄存器变量), static (4)其它关键字(4个):const(只读变量), sizeof, typedef(给数据类型取别名), volatile(变量被隐含)