您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
047第八章 指针07(新版) 指针、数组与函数
发布时间:2021-05-04 16:31:10编辑:雪饮阅读()
关于指针定义字符串的访问方式
一个程序如:
#include <stdio.h>
void main()
{
char *a = "I am a teacher.";
printf("%s \n",a);
a+=7;
printf("%s \n",a);
}
D:\cproject>gcc main.c -o m
D:\cproject>m.exe
I am a teacher.
teacher.
这里可以看到指针定义的字符串也可以像字符数组定义字符串那样。那么为什么会这样呢?
C 语言中下标运算是定义在指针类型上的,数组取下标时要经过数组到指针的隐式转换。所以这里可以认为 [] 做相同的工作(即[]也相当于是经过数组到指针的隐式转换)。
将函数做为指针传递
将函数做为指针传递就可以实现动态的函数调用,比如给两个操作数,再提供一个函数,这个函数可以是做加法、做减法或者做求和或者做求最值等都可以,根据传入的函数来决定。
那么实例如:
/***********************************************************/
/* 设一个函数process,在调用它的时候,每次实现不同的功能。*/
/* 输入a和b两个数,第一次调用process时找出a和b中大者,*/
/* 第二次找出其中小者,第三次求a与b之和。 */
/***********************************************************/
#include <stdio.h>
void main()
{
int max(int, int); /* 函数声明 */
int min(int, int); /* 函数声明 */
int add(int, int); /* 函数声明 */
void process( int, int, int(*fun)() ); /* 函数声明 */
int a, b;
printf("Endter a and b: ");
scanf("%d %d", &a, &b);
printf("max = ");
process(a, b, max);
printf("min = ");
process(a, b, min);
printf("sum = ");
process(a, b, add);
}
int max(int x, int y) /* 函数定义 */
{
int z;
if( x > y )
{
z = x;
}
else
{
z = y;
}
return z;
}
int min(int x, int y) /* 函数定义 */
{
int z;
if( x < y )
{
z = x;
}
else
{
z = y;
}
return z;
}
int add(int x, int y)
{
int z;
z = x + y;
return z;
}
void process( int x, int y, int(*fun)() ) /* 函数定义 */
{
int result;
result = (*fun)(x, y);
printf("%d\n", result);
}
关键字词:指针,函数,数组
上一篇:046第八章 指针06(新版)
下一篇:048第八章 指针08(新版)