IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【无标题】 -> 正文阅读

[C++知识库]【无标题】

输入a,b两个整数,按先大后小的顺序输出,用指针方法处理,不是交换整型变量的值,而是交换两个指针变量的值。

#include<stdio.h>
#include<stdlib.h>
int main()
{
  int a,b,*p1,*p2,*p;
  printf("请输入整数a的大小:");
  scanf("%d",&a);
  printf("请输入整数b的大小:");
  scanf("%d",&b);
    p1=&a;
    p2=&b;
  if(a<b)
	  p=p1;
      p1=p2;
      p2=p;
  printf("max=%d,min=%d",*p1,*p2);
    system("pause");
    return 0;
}

按要求是交换指针变量的值,上图15-17行相当于整型变量互换了,而且指针p还得?有一个整型数据赋值给它,不然就是个野指针。

要求同上,要用函数处理,而且用指针类型的数据作函数参数(交换a,b的值,而p1,p2的值不变)

#include<stdio.h>
#include<stdlib.h>
int main()
{
  void swap(int *p1,int *p2);
     int *pa,*pb;
	 int a,b;
	 printf("请输入a和b的值:");
	 scanf("%d,%d",&a,&b);
	 pa=&a;
	 pb=&b;
  if(a<b) 
	 swap(pa,pb);
     printf("max=%d,min=%d\n",a,b);
     system("pause");
     return 0;
}

  void swap(int *p1,int *p2)
  {
	  int temp;
	temp=*p1;
	*p1=*p2;
	*p2=temp;
  }
   

?*temp是指针变量temp所指向的变量,但是未给temp赋值,因此temp中并无确定的值,所以temp所指向的单元也是不可预见的。所以对*temp赋值是向一个未知的存储单元赋值,而这个未知的存储单元可能存储着一个有用的数据,这样就可能破坏系统的正常工作状况。本例子中temp作为临时辅助变量实现*p1和*p2的交换。

void swap(int *p1,int *p2)
  {   
	  int c;
	  int *temp=&c;
	*temp=*p1;
	*p1=*p2;
	*p2=*temp;
  }

上述代码在函数调用时,a的值传送给x,b的值传送给y,执行完swap函数后,x和y的值是互换了,但并未影响到a和b的值。在函数结束时,变量x和y释放了,main函数中的a和b并未互换。也就是说,由于“”“单向传送”的“”“值传递”方式,形参值的改变不能使实参的值随之改变。?

为了使在函数中改变了的变量值能被主调函数main所用,不能采取上述把要改变值的变量作为参数的方法,而应该用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化依然保留下来,这样就实现了“”“通过调用函数使变量的值发生变化,在主调函数(如main函数)中就可以使用这些改变了的值”的目的。

c语言中实参变量和形参变量之间的数据传递是单向的“”“值传递”方式。用指针变量做函数参数时同样要遵循这一规则。不可能通过执行调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。

就是说用swap函数,p1、p2交换没用,*p1、和*p2交换才有用,不用指针就不行了。

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:51:13  更:2021-12-07 11:52:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:39:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码