版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、使用VC+6.0調(diào)試程序,調(diào)試程序,調(diào)試運(yùn)行 單步跟蹤 單步跳進(jìn)跟蹤 觀察自動變量 觀察其他變量 停止調(diào)試,1:打開jiecheng項(xiàng)目(雙擊jiecheng.dsw文件) 2:build該項(xiàng)目,確定程序可以運(yùn)行 3:調(diào)試運(yùn)行階乘程序 4:設(shè)置斷點(diǎn) 5:再次調(diào)試運(yùn)行程序 6:使用單步執(zhí)行程序到結(jié)束,1:打開jiecheng項(xiàng)目,2:Build該項(xiàng)目,確定程序可以運(yùn)行,3:調(diào)試運(yùn)行階乘程序,4:設(shè)置斷點(diǎn),將鼠標(biāo)停留在程序的第8行,在第8行的任意地方單擊鼠標(biāo)左鍵(第8行即“i = i*4;”) 在工具欄上選擇 按鈕,為第8行設(shè)置斷點(diǎn),以便讓程序在此處暫停運(yùn)行,5:再次調(diào)試運(yùn)行階乘程序,注意觀察,現(xiàn)
2、在調(diào)試運(yùn)行程序會如何?,5:再次調(diào)試運(yùn)行階乘程序(續(xù)),6:使用單步執(zhí)行到程序結(jié)束,設(shè)置斷點(diǎn)以后,調(diào)試運(yùn)行程序時,程序開始執(zhí)行,并且運(yùn)行到斷點(diǎn)處暫停下來,此時我們有機(jī)會觀察程序的運(yùn)行情況,并且診斷程序目前的狀態(tài)是否如我們所預(yù)期的那樣。 不過我們先不著急觀察程序的狀態(tài),而是來看看如何控制程序的運(yùn)行,以便在我們需要的時候讓程序暫停下來,并且以我們需要的方式走走停停!,6:使用單步執(zhí)行到程序結(jié)束,程序停下來了,如何讓程序從暫停的地方繼續(xù)向前執(zhí)行? 方法是使用單步執(zhí)行手段(Step Over)讓程序向前走一步,熟悉調(diào)試工具欄和菜單(只在調(diào)試運(yùn)行時出現(xiàn)),對比調(diào)試運(yùn)行時出現(xiàn)的 調(diào)試菜單“Debug”和調(diào)
3、試 工具欄,根據(jù)圖標(biāo)查找 對應(yīng)項(xiàng),觀察自動變量,自動變量,觀察變量的值及其隨程序運(yùn)行時的變化情況,設(shè)置斷點(diǎn),調(diào)試運(yùn)行程序,此時程序暫停在斷點(diǎn)處等待 選擇Debug菜單,找到 最后一項(xiàng)“Quick Watch” 并點(diǎn)擊,點(diǎn)擊Add Watch,點(diǎn)擊Add watch,看到如下畫面,調(diào)試觀察每一步驟變量i的值,點(diǎn)擊單步執(zhí)行按鈕或者菜單,程序則向前單獨(dú)運(yùn)行一個步驟 每向前執(zhí)行一步,就會暫停下來,這樣我們就有充足的時間觀察所關(guān)心的變量名稱 觀察變量i的值的情況,注意在調(diào)試過程中,斷點(diǎn)不能設(shè)置在空白行上面 添加斷點(diǎn)和刪除斷點(diǎn)的方法一樣 一個程序中可以設(shè)置多個斷點(diǎn) 按下F5鍵可以讓程序從當(dāng)前位置向前執(zhí)行,
4、直到遇見下一個斷點(diǎn)或者程序結(jié)束,相關(guān)C語言基礎(chǔ)知識,指針: 結(jié)構(gòu)體:,指針,新建Visual C+程序,四、利用已有的程序編寫新程序 無論是控制臺程序,或者是Windows窗口程序,Visual C+都會要求有對應(yīng)的項(xiàng)目文件。而且在大多數(shù)情況下,C程序的基本框架都是一致的,例如:都有主函數(shù)等等。所以在編寫一個新的程序時,可以利用以前編寫過的程序,其操作方法有兩種。 (1)程序復(fù)用操作 將已有的程序復(fù)用到新程序上的方法很簡單,就是將程序內(nèi)容通過“復(fù)制粘貼”實(shí)現(xiàn)。 (2)項(xiàng)目復(fù)用操作 打開已有的項(xiàng)目文件,將原來的文件刪除,利用項(xiàng)目管理增加新程序文件或資源元素等。,新建Visual C+程序,五、項(xiàng)
5、目管理 無論項(xiàng)目是否建立,只要開始程序的編譯、鏈接、運(yùn)行或調(diào)試過程,Visual C+就會按項(xiàng)目管理方式進(jìn)行控制。 例如:當(dāng)使用文件新建方式建立一個源程序文件后,只要開始編譯則Visual C+會自動提示創(chuàng)建項(xiàng)目。,新建Visual C+程序,地址和指針的概念,一、指針概述: 1、“,例如: int i, j, *pi, *pj; float x, y, *p1, *p2; 指針變量的賦值:使得指針變量指向變量 指針變量名 注意:指針變量只能存放指針(地址),且只能是相同類型變量的地址。 例如,指針變量pi、pj,只能接收int型、p1, p2只能接收float型的地址,否則出錯。,結(jié)構(gòu)體,指
6、針變量的引用,在程序中,可以用:*指針變量名代替其所指變量。 如若: int i, *p; p=的作用相同,即可用*p代替i,這里*號稱為指針運(yùn)算符(或稱為間接訪問運(yùn)算符),指針變量作為函數(shù)參數(shù),實(shí)參:變量地址或已賦值的指針變量,形參:指針變量 功能:地址傳送方式,會將改變后的值帶回。,例10.3通過函數(shù)調(diào)用實(shí)現(xiàn)例10.2的功能。 swap(int *p1, int *p2) int temp; temp=*p1; *p1=*p2; *p2=temp; main() int a, b, *pointer1,*pointer2; scanf(%d%d, ,數(shù)組與指針,1.概念 數(shù)組的指針數(shù)組在內(nèi)
7、存中的起始地址,用數(shù)組名表示 2.指向數(shù)組的指針變量-賦于數(shù)組名的指針變量 例如,int a 10, *p=a (或*p=,3.通過指針引用數(shù)組元素 如果有“int a 10,*p=a;” ,則: (1)p+i=a+i= /* fp為指向int函數(shù)的指針變量*/,(2)賦值 函數(shù)名代表該函數(shù)的入口地址。因此,可用函數(shù)名給指向函數(shù)的指針變量賦值。 指向函數(shù)的指針變量 注意:函數(shù)名后不能帶括號和參數(shù);函數(shù)名前的“ int min(int,int); int add(int,int); int process(int, int, int (*fun)(); int a,b; printf(enter
8、 a and b:); scanf(%d%d, ,max(int x, int y) return xy?x:y; min(int x, int y) return xy?y:x; add(int x, int y) return x+y; process(int x, int y, int (*fun)(int,int) /*fun是一個指向函數(shù)的指針,該函數(shù)是一個有兩個整型參數(shù)的返回整型值的函數(shù)*/ int result; result=(*fun)(x,y); printf(%dn,result); ,返回指針值的函數(shù),一個函數(shù)可以返回一個int型、float型、char型的數(shù)據(jù),也可以
9、返回一個指針類型的數(shù)據(jù)。 返回指針值的函數(shù)(簡稱指針函數(shù))的定義格式如下: 函數(shù)類型 *函數(shù)名(形參表列) 例如: int *a(int x,int y); 該函數(shù)的函數(shù)名為a,返回的是一個整型的指針。,指針數(shù)組,指針數(shù)組的概念 數(shù)組的每個元素都是一個指針數(shù)據(jù)。指針數(shù)組比較適合用于指向多個字符串,使字符串處理更加方便、靈活。 數(shù)據(jù)類型 *數(shù)組名元素個數(shù) 例如: int *p4; char *string10;,p指向數(shù)組a易混淆的問題,*p+,*p(+),*(+p),(*p) 設(shè)P指向a數(shù)組中的第i個元素: *(p-)=ai-; *(-p)=a-i; *(+p)=a+i.,結(jié) 構(gòu) 體,例: 描
10、述一個學(xué)生的姓名、學(xué)號、性別、年齡。 每個學(xué)生都有這樣的屬性,它們構(gòu)成一個描述學(xué)生具體情況的一個整體。而每個屬性又是一個基本的類型,本例中可分別用字符數(shù)組、長整型、字符型、和整型來描述。,一、結(jié)構(gòu)體類型的定義,結(jié)構(gòu)體概念的引入,數(shù)據(jù)的描述: 基本類型:整型、實(shí)型、字符型。 數(shù)組:屬于同一種類型的元素的集合。 有時,需要用不同的數(shù)據(jù)類型來描述一個事物的各方面屬性,故此,C語言引入了結(jié)構(gòu)體的概念。,struct 結(jié)構(gòu)體類型名 類型標(biāo)識符 成員名1; 類型標(biāo)識符 成員名2; 類型標(biāo)識符 成員名n; ;,結(jié)構(gòu)體類型的定義,如: struct student char name10; long id;
11、char gender; int age; ,注意: struct student 應(yīng)作為一個類型整體, name10、id、gender、age都是其成員。 struct及花括號后的“;”不能省。,定義結(jié)構(gòu)體類型, 描述下列數(shù)據(jù),struct student int no; /*學(xué)號*/ char name10; /*姓名*/ char sex; /*性別*/ int age; /*年齡*/ float score10; /*成績*/ ;,結(jié)構(gòu)體類型的舉例,(1) 學(xué)生情況: 包含學(xué)生的學(xué)號、 姓名、 性別、 年齡、10門課程成績:,結(jié)構(gòu)體類型可以嵌套定義 即一個結(jié)構(gòu)體類型中的某些成員又是其
12、他結(jié)構(gòu)體類型,注意,例如,對已定義的結(jié)構(gòu)體類型struct student ,可以定義結(jié)構(gòu)體變量: struct student zhang ,stu1; ,二、結(jié)構(gòu)體變量,結(jié)構(gòu)體變量的定義,1.先定義結(jié)構(gòu)體類型, 再定義結(jié)構(gòu)體變量,格式: struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名表;,三種方法:,2.在定義結(jié)構(gòu)體類型的同時定義變量,例如:struct student char name10; char sex; int age; float score; stu1,stu2;,格式: struct 結(jié)構(gòu)體類型名 類型標(biāo)識符 成員名1; 類型標(biāo)識符 成員名2; 類型標(biāo)識符 成員名n; 變量名表;,
13、3. 用匿名形式直接定義結(jié)構(gòu)體類型變量(不出現(xiàn)結(jié)構(gòu)體名),例如:struct char name10; char sex; int age; float score; stu1,stu2;,格式: struct 類型標(biāo)示符 成員名1; 類型標(biāo)示符 成員名2; 類型標(biāo)示符 成員名n; 變量名表;,(1)類型與變量是不同的概念,不要混同。對結(jié)構(gòu)體變量來說,在定義時一般先定義一個結(jié)構(gòu)體類型,然后定義變量為該類型。只能對變量賦值、存取或運(yùn)算,而不能對一個類型賦值、存取或運(yùn)算。在編譯時,對類型是不分配存儲空間的,只對變量分配存儲空間。 (2)對結(jié)構(gòu)體中的成員,可以單獨(dú)使用,它的作用相當(dāng)于普通變量。 (3
14、)成員也可以是一個結(jié)構(gòu)體變量。 (4)成員名可與程序中的變量同名,兩者不代表同一對象。,結(jié)構(gòu)體的說明,例。定義結(jié)構(gòu)體變量stu1: struct student stu1; stu1.age=20; scanf(%f, stu1.age 表示引用結(jié)構(gòu)體變量stu1中的age成員,因該成員的類型為int型,所以可以對它執(zhí)行任何int型變量可以執(zhí)行的運(yùn)算。,結(jié)構(gòu)體變量的使用,結(jié)構(gòu)體變量一般不整體引用,而是引用其成員變量。,成員變量引用格式,結(jié)構(gòu)體變量名.成員名,其中的圓點(diǎn)運(yùn)算符稱為成員運(yùn)算符,它的運(yùn)算級別是最高的。,(1) 結(jié)構(gòu)體類型變量的各成員(分量)必須單獨(dú)引用,成員運(yùn)算符“”具有最高優(yōu)先級。
15、 (2) 不允許對結(jié)構(gòu)體變量進(jìn)行整體的輸入輸出 如:scanf(“%s%c%d%f”, (4) 嚴(yán)格區(qū)分類型與變量的概念。 (5) 如果結(jié)構(gòu)體成員本身又是結(jié)構(gòu)體類型的,則可繼續(xù)使用成員運(yùn)算符取結(jié)構(gòu)體成員的結(jié)構(gòu)體成員,逐級向下,引用最低一級的成員。程序只能對最低一級的成員進(jìn)行運(yùn)算。例如,對stu1某些成員的訪問: stu1.birthday.day=23; stu1.birthday.month=8; stu1.birthday.year=1985;,說明,結(jié)構(gòu)體變量的初始化,結(jié)構(gòu)體變量可以在定義時初始化。,格式,struct 結(jié)構(gòu)體名 成員表; 結(jié)構(gòu)體變量=初始化數(shù)據(jù)表;,例 struct student char name10; char sex; int age; float score; stu1,stu2=“Wangwu”,m,20,88.5;,一個結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址??梢远x一個指針變量,用來指向一個結(jié)構(gòu)體變量,此時該指針變量的值是結(jié)構(gòu)體變量的起始地址 。,四、結(jié)構(gòu)體類型指針,例如: struct student *pstu, stu; pstu= 定義了一個指針變量pstu,并使指針指向結(jié)構(gòu)體變量stu 。 *pstu 表示指針pstu所指示的結(jié)構(gòu)體變量(對象)stu,因而,其成員表示為(*pstu).name ,(*pstu).a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年通過客戶體驗(yàn)優(yōu)化提高房地產(chǎn)銷售額
- 2026年電氣傳動控制系統(tǒng)的項(xiàng)目案例分享
- 2026年年房地產(chǎn)行業(yè)的重要法律法規(guī)
- 2026春招:物流專員面試題及答案
- 貨車司機(jī)安全培訓(xùn)例會課件
- 貨梯安裝培訓(xùn)課件
- 2026年電子科技大學(xué)成都學(xué)院單招綜合素質(zhì)考試備考題庫帶答案解析
- 2026年德州科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫帶答案解析
- 2026年鶴壁職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題帶答案解析
- 賬務(wù)知識講解課件模板
- 飛機(jī)結(jié)構(gòu)與系統(tǒng)專業(yè)復(fù)習(xí)考試題庫 (530題)
- 2024年新疆中考數(shù)學(xué)試卷試題解讀及答案講解課件
- 迎接期末+做自己的英雄 高二上學(xué)期心理健康教育主題班會
- 招標(biāo)代理服務(wù)服務(wù)方案
- 初一數(shù)學(xué)上冊有理數(shù)加減混合運(yùn)算練習(xí)題及答案(共100題)
- 《檳榔的危害》課件
- 正畸口腔健康宣教課件
- 人工智能在檢驗(yàn)醫(yī)學(xué)中的應(yīng)用
- DB42T2043-2023既有住宅和社區(qū)適老化改造技術(shù)規(guī)范
- 單位消防安全教育培訓(xùn)記錄表
- 江蘇省工程質(zhì)量安全手冊實(shí)施細(xì)則房屋建筑工程篇(2022年版)上冊:質(zhì)量分冊
評論
0/150
提交評論