当前位置:网站首页>三.两数交换 空指针 && 野指针 解引用问题
三.两数交换 空指针 && 野指针 解引用问题
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题思路
给我一个机会,帮你快速上手三子棋
Go语言基础(十四):单元测试
微信小程序学习(二)
Anatomy of Storage Size, Value Range, and Output Format of Basic Data Types in C Language
低代码的开发前景
Heap series_0x09: Example of heap corruption (illegal access + uninitialized + heap handle mismatch)
2022深圳杯D题思路:复杂水平井三维轨道设计
排序相关:数组的相对排序、最小的k个数(快排)、合并区间、翻转对 ...
微服务框架笔记(1)
随机推荐
2022国赛数学建模思路汇总A题B题C题D题 高教社杯
在追梦的路上,唯独脚踏实地,才能梦想成真
5. Visualizing Geospatial Data
多线程相关:按序打印、交替打印FooBar、交替打印字符串
经典题型(一)
Typescript学习(一)
2022年深圳杯建模A题思路: 破除“尖叫效应”与“回声室效应”,走出“信息茧房”
Two ways to find the factorial of n
小心使用C语言realloc()函数!!!
Redis学习(一.redis中的数据结构)
第一章:GEE 和 GEEMAP
Heap series_0x0A: 3 methods to solve the heap overflow problem at once
2022华数杯建模B题思路解析
web项目访问jar内部的静态资源
Go语言基础(十):接口
2022深圳杯D题思路:复杂水平井三维轨道设计
typescript学习(三)
学编程的第七天
Codeforces Round #806 (Div. 4)||沉淀)血洗五道口
C语言基本数据类型的存储大小、取值范围、输出格式的解剖