4.关于指针的两个看似简单实则意义深远的题

2024-03-31 22:32

本文主要是介绍4.关于指针的两个看似简单实则意义深远的题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0.指针是无私的,它并不关系自己,只关心指向的那个变量 。

int a = 1 ;

int *p1 = &a ;

*p1 += 1;

cout<<a<<*p1<<endl;

输出结果为,a = 2,*p1 = 2;

结论:指针是无私的,它并不关心自己,只关心指向的那个变量,,说白了,,就是间接引用那个变量,指针没有值,只是地址。

对*指针的操作就是对指向变量的操作!!!

1.void main()

{
 int a ,b ;
 int *p,*p1,*p2;
 p2 = &b;
 p1 = &a;
 cout<<"输入两个值"<<endl;
 cin>>a>>b;
 if (a<b)
 {
    p = p1;
    p1 = p2 ;
    p2 = p;

 }
 cout<<"a = ? p1 = ? *p1 = ?"<<a<<" "<<p1<<" "<<*p1<<endl;
 cout<<"b = ? p2 = ? *p2 = ?"<<b<<" "<<p2<<" "<<*p2<<endl;


}

结果:假如输入a = 1,b = 2。

输出结果为 a = 1 ,p1 = 611100 ,*p1 = 2;

                     b = 2 ,p2 = 610004,*p2 = 1;


 if (a<b)   --- a.b并未交换,,交换的只是p1,p2的地址。交换的只是p1和p2的指向,a,b值并未改变!!!!!
 {
    p = p1;
    p1 = p2 ;

    p2 = p;



2.不改变输入的三个数(利用指针),将三个数排序,按*p1最大,*p2 ,*p3的顺序排出。。。利用指针!!!!!/

利用交换指针的指向,而不改变原来的变量值!!


int a,b,c;
int *p, *p1=&a, *p2=&b, *p3=&c;
cout<<"输入a,b,c"<<endl;
cin>>a>>b>>c;
if (*p1<*p2)//不要写成a<b,或者b<c之类的。因为后面的第二次比较第二次比较中,要求*p1是大的那个,,这时候*p1具体是a,还是b是未知的。
    p = p1;
    p1 = p2;
    p2 = p;    //交换指针的指向,不改变原来的变量值!!
}//先比较出两个之中较大的那个
if (*p1 < *p3)
{
    p = p1;
    p1 = p3;
    p3 = p;
}//如果*p3最大,,那么执行完第二次比较之后,p3指向第一次比较后较大的那个结果。接下来的比较就应该,将p3和p2指向互换,也就是下面的比较执行

//如果,*p3比第一次比较后的*p1小,那么p2和p3比较,互换。

if (*p2 < *p3)//比较条件必须是*p2 < *p3,,因为要求是*p2是第二大的那个
{
    p = p2;
    p2 = p3;
    p3 = p ;
}
cout<<*p1<<" "<<*p2<<" "<<*p3<<endl;
}


3.

int *p, *p1=&a, *p2=&b,

if (*p1<*p2)
{
    *p = *p1;///严重注意这里!!:p并没用被初始化地址,,它的地址这时候是任意的,当你把*p1(a变量)赋给未知地址的指针时候,,这时候系统会报错!!
    *p1 = *p2;
    *p2 = *p;

4.

int p, *p1=&a, *p2=&b,

if (*p1<*p2)
{
    p = *p1;//这时候就没错了,因为p声明的是一个变量,而不是指针!
    *p1 = *p2;
    *p2 =p;


5.注意;使用指针对数的排序是非常广泛的!!!!

6.输入两个数,利用指针函数对两个数进行由大到小的排序。

void swap(int *p1,int *p2)//这里的形参中,一定要加*号,用来说明函数的形参是指针变量

{

int temp;

temp = *p1;

*p1 = *p2 ;

*p2 = *p1 ;

cout<<*p1<<*p2<<endl;

}

void main()

{

cout<<"输入两个数“<<endl;

int a,b;

cin>>a>>b;

int *point = &a ,*point2 = &b;

if(a<b)

{

swap(ponit1,point2)//注意:这里不用在point2前面加*号!!,这里已经是指针变量了,,再加就错了!

cout<<a<<b<<endl;

cout<<*point1<<*point2<<endl;


}

结果:假如输入的是1和2;

那么结果为

输出a = 2,b = 1;

a = 2,b = 1

a = 2,b = 1;

可以看出,,利用指针的函数,,其值传递方式是前后一致的,函数里和主函数中一起改,因为指针引用的就是主函数的变量,是同一个变量,并不是按值传递方式。

这就叫利用指针传递方式。



这篇关于4.关于指针的两个看似简单实则意义深远的题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/865517

相关文章

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

Rust 智能指针的使用详解

《Rust智能指针的使用详解》Rust智能指针是内存管理核心工具,本文就来详细的介绍一下Rust智能指针(Box、Rc、RefCell、Arc、Mutex、RwLock、Weak)的原理与使用场景,... 目录一、www.chinasem.cnRust 智能指针详解1、Box<T>:堆内存分配2、Rc<T>:

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除