




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章作業第一題簡述指針變量和一般變量的異同答:指針變量和一般變量同時變量其值是可以被改變和賦值的,但是指針變量和一般變量不同的是指針變量里所存放的數據是某個變量的地址而不是宏觀上有意義的數字或字符。但是指針變量的使用和一般變量的使用又有一些是相同的,例如可以直接使用“*”號運算符可以對指針所指正的變量直接進行數據操作。例: Int a=3,b=5;Int *p;*p=&a;*p=b; /此處就是將b的值賦給指針p指向的變量 也就是賦給了a(2) 簡述指針的自運算特點 答: 指針變量的自運算是指指針的地址運算如p+;p-;-p;+pP+n;p-n;(注:p是指針變量 n為整數)分別指的是對p所
2、指向的地址左移或右移一個單位地址, 和對p所指向的地址左移或右移n個單位地址!單位地址的大小與指針所指向的變量類型有關!例如p所指向的變量得類型為int型變量,如果進行p+運算就是將指針指向p所指向的地址向數值大的方向加4個字節 ,同理若p指向的是 float型則是向地址大的方向加8個字節(3)簡述指向函數的指針和返回指針的函數 答:指向函數的指針本身是一個指針 ,因為函數通常都有一個輸入接口指向函數的指針就是指向這個函數。 在使用指針的時候會把需要傳遞的參數通過指針傳遞給函數 ,從指向函數的指針定義的方法就可以看出來 。 Int (*pf)(int,int) attention:!!指針定義
3、的類型一定要和函數的返回值類型一樣才ok 不然會報錯哦!-_-#返回指針的函數就是返回值是指針的函數和普通的函數使用方法一樣 ,但是在函數的定義時定義的方法如下 Int* fun(int*,int*) 一般返回指針的函數的參數就是指針的類型返回指指針的函數在學習函數的時候就有學到,主要的優勢是通過指針的傳遞在調用外部函數時可以對main函數中的數據直接進行操作,不會像普通函數一樣如果不適用static靜態局部變量進行聲明那么在函數調用結束后函數壓進棧里面的數據 也就丟失了!(4) 舉例說明如何使用指針訪問一維數組答:使用指針訪問一維數組 ,因為數組的特性是數組在內存中所占的空間是和它所定義的類
4、型相關的。同時數組內的元素在內存空間中的地址是依次排列出來的,所以使用指針訪問數組,可以定義一個指針然后將數組的第一個元素的地址賦值給指針(也就是array【0】)然后可以利用指針的自運通過指針來達到訪問呢數組任意數據的目的!例子 :-如下圖 (5) 舉例如何通過指針訪問二維數組元素答:通過指針訪問二維數組有兩種方法,第一種方法是使用像訪問一維數組時的方式定義指針然后將數組的首地址賦值給指針然后通過指針的自運算利用地址的偏移實現對任意數組元素的訪問,也可以使用for循環的嵌套實現對數組的行和列的控制進而實現對數組的訪遍歷;第二種方法就是定義一個數組指針然后使這個指針指向這個數組,利用數組指針的
5、運算達到數組元素的訪問。下面是兩種方法在vc6.0 IDE下面的代碼截圖 : 第一種方法:第二種方法:(6) 簡述字符數組和字符串指針的異同答:字符數組和字符串指針在定義,和使用以及內存分配方面都有很多的不同;第一 (1)定義的方法不同,字符數組在定義時必須要有數組的長度的分配所以程序員在使用時必須要考慮到實際所要用到的長度,例如要使用有四個字母的字符數組最少要用到5個長度。 (ps:因為字符串后面都要有結束標志字符0)而字符串指針就不存在這個問題,程序員在定義時賦值可以任意的賦值而不需要考慮到內存長度問題。 例:第二 (2)內存分配方法不同,在程序運行時字符串指針是分配在常量區的 ,也就是字
6、符串指針所指向的字符數據在常量區也就是字符串指針在定以賦值后事無法在進行改變了。但是字符數組的空間分配實在棧區的,所以字符數組在定義后是可以多次進行賦值的。但是每個數組在創建時所生成的以數組名定義的指針是一個不可更改值的地址常量(ps:指向數組的第一個元素的地址)這一點一定要區分清楚。第三 (3)后期使用不同,通過上面的內存分配原理我們不難理解在后期的使用中字符數組是可以多次賦值的,但是字符串指針的值是不能改變的!(7)簡述指針數組和數組指針的各自特點答:指針數組與數組指針本身屬性就是兩個不同的概念,指針數組本身就是一個數組,不同的是數組內部的每個元素存儲的都是指針的類型。但是數組指針本身卻是
7、個指針,只是這個指針的指向有點特殊,它每次指向的都是二維數組的行首地址和每行的地址偏移量所以叫他數組指針。指針數組的特點是數組內部的每個元素都是數組類型 這樣我們就利用了數組對數據的組織的方便性結合指針的高效性和方便性,從而對數據的更方便的管理和訪問及使用數組指針的特點是快捷的訪問數組而且通過數組指針我們可以直接對數組指針進行數組下標的訪問,這在指向數組的指針中是難以實現的例 Int array23;Int *p;Int *p2;p=&array0;Printf(“%d”,p12); /此時是違法的!p2=array;Printf(“%d”,p12); /此時是可以使用的!(8) 如何使用指針
8、訪問結構變量答:使用指針訪問結構體變量,首先定義一個指向結構體變量的指針,定義指向結構體變量的指針的方法如下Struct 結構體名,*p指針變量名;定義好指向結構體的指針后還要對他進行賦值 例:Struct student stu,*p;P=&stu;賦值后就可以通過指針訪問結構體中的成員變量了!訪問方式有兩種,使用.運算符訪問成員變量 例 (*p).成員變量名;(2) 使用-運算符訪問成員變量 例 P-成員變量名;(9) 舉例說明如何使用viod指針進行強制類型轉換答:viod指針用來指向一個抽象的數據,在將它值賦值給另一個指針變量時要進行強制的類型轉換使之適合與被賦值的變量的數據類型。 例
9、 Char *p1;Void *p2;P1=(char *)p2; 或P2=(void *)p1;第二題編寫函數fun(int *p,int* lin,int* col),功能是查找二維數組中的最大值,并返回最大值所在的行列號答:源代碼和運行截圖如下 #include #include int fun(int* p,int* lin,int* col);int main()int array23=1,9,6,4,5,2;int lin=0,col=0;int max;max=fun(&array00,&lin,&col);printf(數組中最大的數據是%d n它在第%d行 n它在第%d列n,
10、max,lin,col);system(pause);return 0;int fun(int* p,int* lin,int* col)int i,j;int max;max=*p;for(i=0;i2;i+)for(j=0;j3;j+)if(max*(p+(3*i+j)max=*(p+(3*i+j);*lin=i+1;*col=j+1;return max;編寫函數fun(char *s),功能是統計字符串中字符的個數答:源代碼和運行截圖如下 #include #include int fun (char *s);int main()char *s=fjashgfjgfjlsagfjkgf
11、juisha; /此處亂敲!int result=0;result=fun(s);printf(字符串s中共有字符%d個n,result);system(pause);return 0;int fun (char *s)int result=0;while(*s)result+;s+;return result;編寫函數fun(char *s),功能是把字符串中的內容逆置答:源代碼和運行截圖如下 #include #include void fun(char *s);int main()char array10;printf(請輸入十個字母數據我們將試著逆置他們n);gets(array);p
12、rintf(您輸入的數據為%sn,&array);fun(&array0);printf(逆置后的數據為%sn,&array);system(pause);return 0;void fun(char *s)int i;char temp;for(i=0;i5;i+)temp=*(s+9-i);*(s+9-i)=*(s+i);*(s+i)=temp;編寫函數fun(char *s1,char *s2),功能是把字符串s2中的內容復制到字符串s1中答:源代碼和運行截圖如下 #include #include void fun(char *s1,char* s2);int main()printf
13、(請輸入兩段字符串我們將會把字符串2的數據復制到字符串1中n);printf(請輸入第一段字符串請輸入十個字符n);char array11;char array211;gets(array);printf(您輸入的第一段字符串為:%sn,array);printf(請輸入第二段字符串請輸入十個字符n);gets(array2);printf(您輸入的第一段字符串為:%sn,array2);fun(&array0,&array20);printf(復制后的數據為n);printf(第一個字符串為%sn,array);printf(第二個字符串為%sn,array2);system(pause);return 0;void fun(char *s1,char* s2)int i=0;for(i;i10;i+)*(s1+i)=*(s2+i);編寫函數fun(char *s1,char *s2),功能是把字符串s2的內容鏈接到字符串s1的后面答:源代碼和運行截圖如下 #include #include void fun(char* s1,char* s2);int main()printf(請您輸入兩段字符串 我們將首尾鏈接他們n);char array21;char array211;printf(請您輸入十個字母或
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年消防安全知識培訓考試題庫:火災預防與逃生法規知識試題集
- 2025年心理咨詢師基礎理論知識測試卷(心理咨詢實踐案例分析)
- 2025年小學教師資格考試《綜合素質》教育心理學教學策略測試題
- 2025年ACCA國際注冊會計師考試真題卷:管理會計實務篇
- 2025年小學語文畢業升學考試全真模擬卷(文學知識與寫作能力強化版試卷)
- 貴陽學院《食品環境學(實驗)》2023-2024學年第二學期期末試卷
- 南昌應用技術師范學院《自由搏擊》2023-2024學年第二學期期末試卷
- 閩北職業技術學院《針刀醫學》2023-2024學年第一學期期末試卷
- 云南省楚雄州元謀縣一中2025年高三第二次聯考考生物試題文試題含解析
- 海南職業技術學院《日語教學》2023-2024學年第二學期期末試卷
- 2024年西安鐵路職業技術學院單招職業適應性測試題庫必考題
- 消化內鏡進修總結匯報
- 山東省臨沂市河東區2023-2024學年七年級下學期期中測試歷史試題
- 江蘇省昆山、太倉、常熟、張家港市2023-2024學年下學期七年級數學期中試題
- MOOC 敦煌文學藝術-浙江師范大學 中國大學慕課答案
- MOOC 大地測量學基礎-南京信息工程大學 中國大學慕課答案
- 運輸安保工作方案
- 生物地球化學性疾病試題
- 休閑與旅游農業課件
- 產品驗證報告
- 電影項目融資計劃書
評論
0/150
提交評論