交换两个整形变量的数值

 课堂问题一:

#include<stdio.h>void swap(int *p,int *q)
{int *m;printf("m=%d\n",m);printf("%s\n",*m);*m=*p;*p=*q;*q=*m; } int main(){int a,b;scanf("%d,%d",&a,&b);swap(&a,&b);printf("a=%d b=%d\n",a,b);return 0;}

 

因为*m没有被初始化所以在直接对它进行使用的时候,它指向的是一个未知的单元格所以所以在对它它所指向的单元进行更改的时候是一种危险的操作是错误的,即使执行成功可能也是碰运气。

 

课堂问题二:

#include<stdio.h>void swap(int *p,int *q)
{int *m;m=p;p=q;q=m;printf("p=%x q=%x\n",p,q);} int main(){int a,b;scanf("%d,%d",&a,&b);swap(&a,&b);printf("a=%d b=%d\n",a,b);return 0;}

我们可以理解a b m p q是几个大房间 a b 房间中存放着我们想要的东西 而p q房间中存放着a b房间的钥匙 也就是a b的地址 想要打开房间就需要地址也就是钥匙

但是在swap中用m对p q进行交换的只是a b两个房子的钥匙

把原来a 的钥匙放在了q原来在q中的b放在了p中这样 只是换了一个房子存储了钥匙既a b的地址

这样a b中存储的东西是不会发生变化的。

 

课堂问题三:

#include<stdio.h>int *comp(int *p,int *q)
{if(*p>*q){return p;}else {return q;}
}
int main()
{int a=6;int b=23;int *c,*p,*q;p=&a;q=&b;c=comp(p,q);printf("a=%d b=%d\n",a,b);printf("max=%d\n",*c);return 0;} 

 

指针在使用时常见的错误:

*和[]在定义的时候只是说明作用不能误解为运算符

*,[]和&是C语言提供的运算符

分别是取地址运算符、指针运算符和下标运算符,其中,&与*互为逆运算.在表达式中,它们的意义很明确,但是在定义中*、[]

只是起说明作用,不能看作运算符

 

指针变量未初始化

指针在使用的时候必须进行初始化,如果使用未初始化的指针,因为它没有初始化他将会得到一个不确定的值,

那么它的和指向也是不确定的,那么它就有可能指向了系统所在的地址这种操作是十分危险的。

 

指针类型错误

指针变量只能存储相同类型的变量的地址 如果存储的类型不同将会发生错误。

 

用数据直接给指针变量赋值

指针变量中存储的其实就是一些整数的地址数据,但是如果直接用数据给指针变量赋值那么编译就会出现错误。

如:

int a,*p;
a=11021;
p=a;

 

指针之间相互赋值

如果指针之前相互赋值不当会造成内存空间丢失现象

 

 

 1 #include<stdio.h>
 2 #include<time.h> 
 3 #include<windows.h>
 4 
 5 void swap(int *a,int *b); //全局声明swap函数 
 6 int main和
 7 {
 8 int a,b,choose; //定义整型变量 用于存储a,b的值 和对选择操作提示输入值的存储 
 9 int *ip1,*ip2; //定义两个指针变量 用于存储a,b的地址 
10 ip1=&a; 
11 ip2=&b; //将a,b的地址传递给指针变量 ip1和ip2 
12 srand(time(NULL));
13 a=rand()%100+1; 
14 b=rand()%100+1; //生成两个随机数并赋值给a,b 
15 printf("输入‘1’对两数进行交换:"); 
16 scanf("%d",&choose); //输入选择操作的提示
17 
18 if(choose==1) //当输入值为1的时候 执行swap函数 
19 {
20 printf("正在为您进行交换请稍后");
21 for(int i=0;i<5;i++)
22 {
23 Sleep(1000); //模拟系统正在进行处理 Sleep(1000) 让系统暂停一秒
24 printf("."); //也起到了让系统释放内存的效果 让程序运行更加高效 
25 }
26 printf("\n");
27 printf("交换前 a=%d\tb=%d\n",a,b); 
28 swap(ip1,ip2);
29 }
30 else 
31 {
32 printf("输入错误退出程序!");
33 
34 exit(0);
35 }
36 
37 }
38 
39 void swap(int *a,int *b) //定义的swap 函数内容 
40 {
41 int z; 
42 z=*a;
43 *a=*b;
44 *b=z; //通过指针对a,b的进行交换 
45 printf("交换后 a=%d\tb=%d",*a,*b);
46 }

 

输入‘1’对两数进行交换:1
正在为您进行交换请稍后.....
交换前 a=69     b=72
交换后 a=72     b=69

  

输入‘1’对两数进行交换:a
输入错误退出程序!

  

 

 

总结:通过生成1到100的随机数来填充a,b的值 并将a,b的地址赋给相应的指针变量

同过输入数字进行判断 是否执行后续的程序如果输入不为1将直接退出程序

如果输入正确 通过Sleep()模拟系统正在处理将调用swap函数 对a,b的值进行调换并输出

 

转载于:https://www.cnblogs.com/foreverW/p/6597158.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用CodeFirst创建并更新数据库

本文主要介绍如何使用CodeFirst模式来新建并更新数据库 在使用Entity Framwork的三种方式&#xff08;ModelFist、DBFirst、CodeFirst&#xff09;中&#xff0c;CodeFirst方式书写的代码最为干净。 至于CodeFist方式的详细优缺点请各位读者自行搜索&#xff0c;这里不多赘述。…

fedora 15怎么修改运行级别?

inittab改了已经在fedora15中&#xff0c;你vim它就可以看到更改说明&#xff0c;就是说都改到/etc/systemd/system/default.target这里了&#xff0c;就是缺省的设置。如果你要改变缺省值就把对应的runlevel移动过去覆盖了。 To 3 字符 [root15 system]# rm -rf /etc/systemd…

浅析人脸检测之Haar分类器方法

由于工作需要&#xff0c;我开始研究人脸检测部分的算法&#xff0c;这期间断断续续地学习Haar分类器的训练以及检测过程&#xff0c;在这里根据各种论文、网络资源的查阅和对代码的理解做一个简单的总结。我试图概括性的给出算法的起源、全貌以及细节的来龙去脉&#xff0c;但…

利用微软平台生成报表,线性图,柱形图

说来惭愧,以前的工作中一直借助第三方dll进行报表制作,比如线性图,柱形图. 因为现在工作的这家公司不允许随便引入第三方dll,听同事说起可以建rdl类型文件进行引入到winform窗体中,窗体上使用reportViewer控件进行关联展示.下面是我今天摸索3个小时的结果分享. 第一步. 首先找到…

Linux ffmpeg的安装编译过程

Linux ffmpeg的安装编译过程 1、下载ffmpeg。    在网上搜索一下,或者到官方网站下载2、解压   tar命令解压3、配置  ./configure --enable-shared --prefix/usr/local/ffmpeg  其中&#xff1a;--enable-shared 是允许其编译产生动态库&#xff0c;在以后的编程中…

opencv 模板匹配(cvMatchTemplate)

opencv 模板匹配(cvMatchTemplate) 模板匹配是通过在输入图像上滑动模板图像块对实际的图像块和输入图像进行匹配&#xff0c;并且可以利用函数cvMinMaxLoc()找到最佳匹配的位置。例如在工业应用中&#xff0c;可以锁定图像中零部件的位置&#xff0c;并根据具体的位置&…

爬虫系统Lucene分词

思路&#xff1a;查询数据库中信息&#xff0c;查询出id和name把那么进行分词存入文件 package com.open1111.index; import java.io.IOException;import java.nio.file.Paths;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet; impor…

[BZOJ1880] [Sdoi2009] Elaxia的路线 (SPFA 拓扑排序)

Description 最近&#xff0c;Elaxia和w**的关系特别好&#xff0c;他们很想整天在一起&#xff0c;但是大学的学习太紧张了&#xff0c;他们 必须合理地安排两个人在一起的时间。Elaxia和w**每天都要奔波于宿舍和实验室之间&#xff0c;他们 希望在节约时间的前提下&#xff0…

ffmpeg的编译大全

ffmpeg的编译大全 最近互联网视频共享的网站很火&#xff0c;公司也想搞类似的网站&#xff0c;初步是用fmsffmpeg形式 fms负责在线录制&#xff0c;播放&#xff0c;ffmpeg则在后台处理上传的资源转换成一定的格式。 为了让ffmpeg支持的格式尽量多&#xff0c;所以特把我的编译…

用OPENCV视觉解数独

用OPENCV视觉解数独 2010-06-29 看到增强视觉网站上介绍老外用视觉解SUDOKU(http://www.cvchina.info/2011/05/29/video-sudoku-solver/)&#xff0c;觉得应该不难&#xff0c;于是用OPENCV和训练好的数字分类器&#xff0c;也试着做一个&#xff0c;纯属娱乐 基本思路如下&…

集成ffmpeg/x264:ERROR: libx264 not found的问题

集成ffmpeg/x264:ERROR: libx264 not found的问题--拔剑集成ffmpeg/x264碰到如下问题&#xff1a; ERROR: libx264 not found察看config.log,详细信息如下&#xff1a;check_lib x264.h x264_encoder_encode -lx264check_header x264.hcheck_cppBEGIN/tmp/ffconf.isuazGlg.c1 …

[ActionScript 3.0] AS3.0 下雨及涟漪效果

帧代码&#xff1a; stage.frameRate 80;function init(x1:Number,y1:Number) {var mc:MovieClipnew MovieClip();addChild(mc);mc.x x1;mc.y y1;mc.graphics.lineStyle(0.5,0xbbffff,0.6);mc.graphics.drawEllipse(-1,-0.3,2,0.6);mc.addEventListener(Event.ENTER_FRAME,f…

JS Math.round()方法原理

请先测试代码&#xff1a; 1 <!doctype html>2 <html lang"en">3 4 <head>5 <meta charset"UTF-8" />6 <title>Math.round方法</title>7 <style type"text/css">8 …

一个通用Makefile的编写

我们在 LinuxLinux Linux是一套免费使用和自由传播的操作系统&#xff0c;它主要用于基于Intel系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的&#xff0c;其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 环境下…

Cache替换算法:LRU与LFU的区别

LFU&#xff08;Least Frequently Used&#xff09;最近最少使用算法。它是基于“如果一个数据在最近一段时间内使用次数很少&#xff0c;那么在将来一段时间内被使用的可能性也很小”的思路。LRU&#xff08;Least Recently Used&#xff09;. 注意LFU和LRU算法的不同之处&…

001-Ansible-参考http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks

1. Patterns 在Ansible中,Patterns 是指我们怎样确定由哪一台主机来管理. 意思就是与哪台主机进行交互. ansible <pattern_goes_here> -m <module_name> -a <arguments>ansible webservers -m service -a "namehttpd staterestarted"同时让我们提前…

linux下通用Makefile写法

linux编译多个源文件的程序比较麻烦&#xff0c;这下就需要通用的Makefile了&#xff0c;编译的时候执行一下make命令就OK&#xff0c;下面介绍通用makfile的写法。 假设现在有以下源文件&#xff1a;file1.h file1.c file2.h file2.c mainproc.c&#xff0c;程序的主函数在mai…

客服弹出框

html代码&#xff1a; <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>QQ在线客服jquery特效</title><link rel"stylesheet" type"text/css" href"common/css/lay…

第三次毕业设计任务书

一. 进度计划 时间 计划进度 3.24-3.30 尝试将kdd数据预处理用代码实现 3.31-4.6 将kdd数据预处理用代码实现以及与aprior算法的结合 二. 课题需求 2.1 数据预处理的功能和主要方法 在现实中,由于数据的来源、组织、存储等的多样性,海量的原始数据中一般都很难避免“脏数据…

电商第一季函数笔记(1)

1、isset (PHP 4, PHP 5, PHP 7) isset — 检测变量是否设置 说明 bool isset ( mixed $var [, mixed $... ] ) 检测变量是否设置&#xff0c;并且不是 NULL。 如果已经使用 unset() 释放了一个变量之后&#xff0c;它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL …