当前位置:网站首页>三.两数交换 空指针 && 野指针 解引用问题
三.两数交换 空指针 && 野指针 解引用问题
2022-08-09 15:07:00 【榶曲】
目录
在做两数交换时,使用指针来接收需要交换的数是什么情况?以下是我的一些实验结论
正常交换
void swap(int* x, int* y)
{
int temp = 0;
temp = *x;//*x为指针x的解引用操作,表示a的值
*x = *y;
*y = temp;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前a=%d,b=%d\n", a, b);
swap(&a, &b);
printf("交换后a=%d,b=%d\n", a, b);
return 0;
}空指针
情况一:
void swop(int* x, int* y)
{
int* temp = NULL;
*temp = *x;//*x为指针x的解引用操作,表示a的值
*x = *y;
*y = *temp;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a=%d,b=%d\n", a, b);
swop(&a, &b);
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}
temp为空指针,空指针执向0地址,该指针为空,是无效的,不能对无效的指针解引用
当它发生解引用时,会发生指针解引用错误。
情况二:
void swop(int* x, int* y)
{
int* temp = NULL;
temp = *x;
//在c语言的语法上这种写法是不正确的
//但是在指针变量解引用后,看做一个整形变量放到temp指针中是可以放下的
*x = *y;
*y = temp;
}
野指针
情况一:
void swop(int* x, int* y)
{
int* temp;
*temp = *x;
*x = *y;
*y = *temp;
}
系统直接崩溃,因为temp为野指针
野指针,即未初始化的指针,没有访问权限的地址(指针)
情况二:
void swop(int* x, int* y)
{
int* temp;
temp = *x;
//在c语言的语法上这种写法是不正确的
//但是在指针变量解引用后,看做一个整形变量放到temp指针中是可以放下的
*x = *y;
*y = temp;
}
边栏推荐
猜你喜欢
随机推荐
2022深圳杯D题思路:复杂水平井三维轨道设计
2022年深圳杯建模A题思路: 破除“尖叫效应”与“回声室效应”,走出“信息茧房”
学习编程的第二天
“泰迪杯”数据分析职业技能大赛B题 学生校园消费行为分析---复盘
Codeforces Round #808 (Div. 2)||沉淀
第一章:GEE 和 GEEMAP
超文本链接
Jenkins Pipeline编写思路与技巧
float属性的使用
2022高教社杯 国赛数学建模 A题思路
【建模必胜秘籍】往届国赛建模方法 2021高教社杯 国赛数学建模
0. About The Author And Preface
Mysql(四)
Go语言基础(十二):并发编程
为什么四个字节的float表示的范围比八个字节的long要广
Mysql学习(一)
Why does a four-byte float represent a wider range than an eight-byte long
文字样式的常见属性的如何使用?
MYSQL数据库一周基础入门(第二天)
第四章:使用本地地理空间数据(4.6-4.14)









