- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#include stdio.h
void cpystr(char *pss, char *pds)
{
while(*pds++=*pss++)
; //循环体为空语句
}
void main()
{
char *pa=CHINA, b[10], *pb;
pb=b;
cpystr(pa, pb);
printf(string a=%s\nstring b=%s\n, pa, pb);
};【例8-21】输入两个整数,按从大到小顺序输出这两个数。要求用函数处理,而且用指针类型的数据作函数参数。;#include stdio.h
void swap(int *p1, int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()
{ int a, b;
int *pointer1, *pointer2;
pointer1=a;
pointer2=b;
scanf(%d,%d, a, b);
if(ab)
swap(pointer1, pointer2);
printf(%d,%d\n,a,b);
};程序说明:
main()函数中,指针变量pointer1和pointer2分别指向a、b的地址。
调用swap()函数时,将pointer1和pointer2(a和b的地址)传递给形参p1和p2;程序说明:
执行swap()函数,使*p1和*p2的值互换,即使a和b的值互换(注意p1和p2的指向未改变)
swap()函数调用结束后,函数中的局部变量p1和p2不复存在,内存空间被释放;思考:若swap函数如下,结果是什么?;void swap(int *p1, int *p2)
{
int *temp;
*temp = *p1;
*p1 = *p2;
*p2 = *temp;
};void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
};#include stdio.h
void main()
{ int a, b, c;
scanf(%d,%d,%d, a, b, c);
exchange(a, b, c);
printf(%d,%d,%d\n, a, b, c);
};8.4.2返回指针值的函数;【例8-23】输入一个字符串,包含n个字符。编写一个函数submax(),从输入字符串中ASCII码值最大的那个字符开始,将其之后的字符全部输出。;#includestdio.h
char *submax(char *s)
{
char *p;
p=s+1;
while(*p)
{
if(*p*s)
s=p;
p++;
}
return(s);
};【例8-24】假设整型数组a在main()函数中定义,试编写test()函数,在其中定义整型数组c,比较整型数组a和c的对应元素值,如果对应元素值相等,则将该元素值赋值给静态数组d的相应单元,最后test()函数的返回值带回静态数组d的起始地址,在main()函数中将数组d中的所有数据以两种方式全部输出。;#include stdio.h
int *test(int b[])
{
int c[5]={1,2,3,4,5}, i;
static int d[5]; //static不能漏掉
for(i=0;i5;i++)
if(*(b+i)==c[i])
d[i]=c[i];
return(d); //返回整型静态数组d的起始地址
}
void main( )
{ int a[5]={1,7,3,9,5};
int *p;
p=test(a);
printf(%d,%d,%d,%d,%d\n, *p, *(p+1), *(p+2), *(p+3), *(p+4));
printf(%d,%d,%d,%d,%d\n, p[0], p[1], p[2], p[3], p[4]);
};C语言中,一个函数总是占用一段连续的内存区
函数名就是该函数所占内存区的首地址。
可以把函数的首地址(或称入口地址)赋给一个指针变量,使该指针变量指向该函数。
通过指针变量可找到并调用该函数
指向函数的指针变量称为“函数指针变量”;函数指针变量定义的一般形式:
类型说明符 (*指针
文档评论(0)