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

相关文章

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. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示