交換兩個整形變量的數值

?課堂問題一:

#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.pswp.cn/news/255028.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255028.shtml
英文地址,請注明出處:http://en.pswp.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 …