c语言第八章(颜辉).ppt
文本预览下载声明
第八章 指针;8.1 指针;变量;8.1.1 指针变量的定义;;8.1.2 指针的基本操作;a;b;a;a;2、赋值=;输出:
10, 100;8.1.3 指针变量的初始化;8.1.3 指针变量的初始化;8.1.4 指针作为函数的参数;swap2(int *p1, int *p2)
{ int t;
t = *p1;
*p1 = *p2;
*p2 = t;
};swap3(int *p1, int *p2)
{ int *p;
p = p1; p1 = p2; p2 = p;
};swap2(int *p1, int *p2)
{ int t;
t = *p1;
*p1 = *p2;
*p2 = t;
};例8.6-1 指针作为函数的参数;例8.6-2;例8.6-3;例7-9;例7-9;例8-7;例8-7;8.2 指针和数组;8.2.1 指针、数组、地址间的关系;int *ap;
ap = a[0];
ap 指向数组a的首元素;a[0];1、数组元素作为函数实参
函数形参为变量
(与变量作为函数实参相同,值传递)
2、数组名作为函数参数
由于数组名是指针常量,相当于指针作为函数的参数
数组名做为实参
形参是指针变量(数组);float average( float *array)
{ int i;
float aver,sum=0;
for(i=0; i10; i++)
sum+=array[i];
aver=sum/10;
return(aver);
} ;float average( float *array)
{ int i;
float aver,sum=0;
for(i=0; i10; i++)
sum+=array[i];
aver=sum/10;
return(aver);
} ;(3) 若在函数中只处理部分数组元素,用参数指定个数;(4) 数组名做为函数的参数,在函数调用时,将实参数组首元素的地址传给形参(指针变量),因此,形参也指向实参数组的首元素。如果改变形参所指向单元的值,就是改变实参数组首元素的值。
或:形参数组和实参数组共用同一段存贮空间,如果形参数组中元素的值发生变化,实参数组中元素的值也同时发生变化。;例 8.9 冒泡法排序;i=1; 9 8 5 4 6 0
i=1
j=0: 8 9 5 4 6 0
j=1: 8 5 9 4 6 0
j=2: 8 5 4 9 6 0
j=3: 8 5 4 6 9 0
j=4: 8 5 4 6 0 9;main()
{
int i, a[10]; ;
for(i=0; i10; i++)
scanf(%d, a[i]);
sort(a, 10);
for(i=0; i10; i++)
printf(%d , a[i]);
printf(\n);
};8.3 指针和字符串;8.3.1 常用的字符串处理函数;⑵ 输入 scanf(%s, str);
注意:
① 输入参数使用数组名,不加地址符。
② 遇到回车或空格,输入结束,并自动在末尾加‘\0’。;③ 输入多个用空格分隔的字符串
char s1[20], s2[20], s3[20];
scanf(%s%s%s, s1, s2, s3);;2、字符串输出函数puts;输出:Hello
World! ; static char str[20];
gets(str);
字符数组名;gets(str) 与 scanf(“%s”, str) 的区别:;strcpy(str1, str2);
将字符串 str2 复制到 str1 中
static char str1[20];
static char str2[20] = “happy”;;# include “stdio.h”
# include “string.h”
main( )
{
char str1[20], str2[20];
gets(str2);
strcpy(str1,str2);
puts(str1);
}; strcat(str1, str2);
连接两个字符串str1和str2, 并将
显示全部