文档介绍:会计学
1
c语言(yǔyán)入门
第一页,共27页。
if(*p2>*p3)
{
t=*p2;
*p2=*p3;
*p3=t;
}
printf(“这三个数从大到小是: %d,%d,%d\n",*p1,*p2,*p3);
}
4、用指针(zhǐzhēn)选出次大数
5、用指针输出(shūchū)最大数、次大数、最小数。
第1页/共27页
第二页,共27页。
#include<>
void jiaohuan(int *p1,int *p2)
{ int t;
t=*p1;
*p1=*p2;
*p2=t;
}
void main()
{ int a,b,c;
printf(“请输入(shūrù)三个数:")
scanf(“%d%d%d”, &a,&b,&c);
if(a>b) jiaohuan(&a, &b);
if(a>c) jiaohuan(&a, &c);
if(b>c) jiaohuan(&b, &c);
printf(“这三个数从大到小是: %d,%d,%d\n",a,b,c);
}
第2页/共27页
第三页,共27页。
第二节 指针(zhǐzhēn)与数组
一、 指针(zhǐzhēn)数组
二、 指针(zhǐzhēn)和字符串
三、 指针和动态内存分配
四、指针与函数
第3页/共27页
第四页,共27页。
一、 指针(zhǐzhēn)数组
1、什么(shén me)是指针数组
若数组中所有元素皆为指向同一数据类型
的指针(zhǐzhēn),则该数组称为指针(zhǐzhēn)数组 。
2、指针数组的定义形式
数据类型 *数组名[ 数组长度 ]
例如: int *p[3];
p为指针数组名;
其元素是p[1]、p[1]和p[2],
且都是指向int类型的指针。
第4页/共27页
第五页,共27页。
printf("Sum = %d\n", sum);
}
【例】求方阵(fānɡ zhèn)a对角线
元素的和。
17
15
13
11
9
7
5
3
1
a[1]
a[2]
a[0]
1、a[0]、a[1]、a[2]分别
是方阵(fānɡ zhèn)a[3][3]行号,也是
相应的行地址。
分析(fēnxī):
2、定义指针数组*p[3]且 p[i]=a[i];则p[i]是 i行首地址.
3、*(p[i]+i)是第i行i列的元素值,即方阵a对角线元素值。
#include<>
void main()
{
int a[3][3] = {{1, 3, 5}, {7, 9, 11},
{13, 15, 17}};
int *p[3], i, sum = 0;
for(i = 0; i < 3; i++)
p[i] = a[i];
for(i = 0 ;i < 3; i++)
sum = sum + *(p[i] + i);
p[1]
p[2]
p[0]
4、循环求和 sum=sum+*(p[i]+i) 。
3、指针数组应用例
第5页/共27页
第六页,共27页。
二、 指针(zhǐzhēn)和字符串
1、字符串指针引入
C语言的字符串常量,是按字符数组处理的;它在
内存中有开始地址,可以(kěyǐ)用指针变量保存它。
2、字符串指针(zhǐzhēn)初始化
char *p = 字符串常量;
如 char *p = "C Language!";
当执行到此语句时,系统
"C Language!“开辟存储空间;
;
。
第6页/共27页
第七页,共27页。
3、字符指针变量与字符数组
char *cp; 与 char str[20];
1)str由若干(ruògān)元素组成,按一个个字符处理;而cp中只存放字符串首地址,按字符串处理,有结束标志‘\0’ ;
2)str是地址常量,cp是地址变量;
3)cp接受键入字符串时,必须先开辟存储空间。
例 char str[10];
scanf(“%s”,str); ()
而 char *cp;
scanf(“%s”, cp); ()
改为(ɡǎi wéi): c