当前位置:网站首页>三.两数交换 空指针 && 野指针 解引用问题
三.两数交换 空指针 && 野指针 解引用问题
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华数杯C题:插层熔喷非织造材料的性能控制研究 - 思路
字符菱形的代码
良匠-手把手教你写NFT抢购软(一)
Chapter 2: Creating Interactive Maps (2.4-2.6)
“泰迪杯”数据分析职业技能大赛B题 学生校园消费行为分析---复盘
第二章:创建交互式地图(2.4-2.6)
3. Using Earth Engine Data
求素数的三种方法
Chapter 5: Visualizing Geospatial Data
学习编程的第三天
2022华数杯A题: 环形振荡器的优化设计 - 思路
3. Using Earth Engine Data
给我一个机会,帮你快速上手三子棋
时间日期格式工具类
测试工作管理与规范
Two ways to find the factorial of n
第一章:GEE 和 GEEMAP
Codeforces Round #808 (Div. 2)||沉淀
4. Using Local Geospatial Data