指针的用处
【摘要】 指针应用场景一交换两个变量的值void swap(int *pa,int *pb){ int t=*pa; *pa=*pb; *pb=t;}#include<studio.h>void swap(int *pa,int *pb);int main(void){ int a=5; int b=6; swap(&a,&b); printf("%d%d"...
指针应用场景一
- 交换两个变量的值
void swap(int *pa,int *pb)
{
int t=*pa;
*pa=*pb;
*pb=t;
}
#include<studio.h>
void swap(int *pa,int *pb);
int main(void)
{
int a=5;
int b=6;
swap(&a,&b);
printf("%d%d",a,b);
return 0;
}
void swap(int *pa,int *pb)
{
int t=*pa;
*pa=*pb;
*pb=t;
}
指针应用场景二
- 函数返回多个值,某些值就只能通过指针返回
- 传入的参数实际上是需要保存带回的结果的变量
#include<studio.h>
int main(void)
{
int a[]={1,2,3,4,5,6,7,8,9};
int min,max;
minmax(a,sizeof(a)/sizeof(a[0]),&min,&max);
printf("%d%d",min,max);
return 0;
}
void minmax(int a[],int len,int *min,int *max)
{
int i;
*min=*max=a[0];
for(i=1;i<len;i++){
if(a[i]<*min){
*min=a[i];
}
if(a[i]>max){
*max=a[i];
}
}
}
函数的参数:a[],一个数组;len,数组的长度;min,max,数组的最大值和最小值。
在minmax这个函数里比较出最大值和最小值,然后通过传出来输出。
指针应用场景二b
函数返回运算的状态,结果通过指针返回。
- 常用的套路是让函数返回特殊的不属于有效范围内的值来表示出错:
- -1或0(在文件操作会看到大量的例子)
- 但是当任何数值都是有效的可能结果时,就得分开返回了
- 状态用return返回,,实际值用指针参数返回
- 原因:可以把函数的返回结果放入if语句里
- 这种类型的程序是因为程序可能会出错,错误需要通过另外的途径表达出来
- 后续的语言(C++,Java)采用了异常机制来解决这个问题
- 状态用return返回,,实际值用指针参数返回
两个整数做除法的函数
#include<studio.h>
int main(void)
void main
{
int a=5;
int b=2;
int c;
if (divide(a,b,&c)){
printf("%d/%d=%d",a,b,c);
}
return 0;
}
int divide(int a,int b,int *result)
{
int ret=1;
if(b==0) ret=0;
else{
*result=a/b;
}
return ret;
}
除法成功,返回1,否则返回0;
指针最常见的错误
- 定义了指针变量,还没有指向任何变量,就开始使用指针
- 这样会修改指针指向的地址,造成程序的崩溃。
总结:指针是C语言里非常常用的工具,使用指针可以让我们更方便地处理函数,使用指针的时候也要小心不要乱赋值。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)