您的位置:首页 > 编程语言 > C语言/C++

C语言提高-第7讲: 返回指针的函数(回顾“野指针”)

2017-10-12 09:30 246 查看
“野指针”的三种形式:

        1)直接将一个整形数赋值给指针指向的整形值          #include<stdio.h>
int main(){
int a,b;
int *p1,*p2;
*p1=10;
*p2=100;
printf("%d %d\n",a,b);
printf("%d %d\n",*p1,*p2);
return 0;
}

        2)直接将地址值赋值给指针
#include<stdio.h>
int main(){
int a,b;
int *p1,*p2;
p1=1x100000;
p2=0x100004;
printf("%d %d\n",a,b);
printf("%d %d\n",*p1,*p2);
return 0;
}

        3)返回值是已经失效的地址
#include<stdio.h>
int *max(int *x,int *y){
int t;
if(*x>*y)
t=*x;
else
t=*y;
return &t;
}
int main(){
int a,b,*p;
scanf("%d %d",&a,&b);
p=max(&a,&b);
printf("max=%d\n",*p);
return 0;
}



            结果可能出现正确,但在其他程序中这样的写法可能会出现错误!

对比返回值是指针的函数:

#include<stdio.h>
int *max(int *x,int *y){
int *t;
if(*x>*y)
t=x;
else
t=y;
return t;
}
int main(){
int a,b,*p;
scanf("%d %d",&a,&b);
p=max(&a,&b);
printf("max=%d\n",*p);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言
相关文章推荐