電子科技大學喬保軍版cc第六節(jié)課后答案_第1頁
電子科技大學喬保軍版cc第六節(jié)課后答案_第2頁
電子科技大學喬保軍版cc第六節(jié)課后答案_第3頁
電子科技大學喬保軍版cc第六節(jié)課后答案_第4頁
電子科技大學喬保軍版cc第六節(jié)課后答案_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第六章作業(yè)第一題簡述指針變量和一般變量的異同答:指針變量和一般變量同時變量其值是可以被改變和賦值的,但是指針變量和一般變量不同的是指針變量里所存放的數(shù)據(jù)是某個變量的地址而不是宏觀上有意義的數(shù)字或字符。但是指針變量的使用和一般變量的使用又有一些是相同的,例如可以直接使用“*”號運算符可以對指針所指正的變量直接進行數(shù)據(jù)操作。例: Int a=3,b=5;Int *p;*p=&a;*p=b; /此處就是將b的值賦給指針p指向的變量 也就是賦給了a(2) 簡述指針的自運算特點 答: 指針變量的自運算是指指針的地址運算如p+;p-;-p;+pP+n;p-n;(注:p是指針變量 n為整數(shù))分別指的是對p所

2、指向的地址左移或右移一個單位地址, 和對p所指向的地址左移或右移n個單位地址!單位地址的大小與指針所指向的變量類型有關!例如p所指向的變量得類型為int型變量,如果進行p+運算就是將指針指向p所指向的地址向數(shù)值大的方向加4個字節(jié) ,同理若p指向的是 float型則是向地址大的方向加8個字節(jié)(3)簡述指向函數(shù)的指針和返回指針的函數(shù) 答:指向函數(shù)的指針本身是一個指針 ,因為函數(shù)通常都有一個輸入接口指向函數(shù)的指針就是指向這個函數(shù)。 在使用指針的時候會把需要傳遞的參數(shù)通過指針傳遞給函數(shù) ,從指向函數(shù)的指針定義的方法就可以看出來 。 Int (*pf)(int,int) attention:!!指針定義

3、的類型一定要和函數(shù)的返回值類型一樣才ok 不然會報錯哦!-_-#返回指針的函數(shù)就是返回值是指針的函數(shù)和普通的函數(shù)使用方法一樣 ,但是在函數(shù)的定義時定義的方法如下 Int* fun(int*,int*) 一般返回指針的函數(shù)的參數(shù)就是指針的類型返回指指針的函數(shù)在學習函數(shù)的時候就有學到,主要的優(yōu)勢是通過指針的傳遞在調(diào)用外部函數(shù)時可以對main函數(shù)中的數(shù)據(jù)直接進行操作,不會像普通函數(shù)一樣如果不適用static靜態(tài)局部變量進行聲明那么在函數(shù)調(diào)用結(jié)束后函數(shù)壓進棧里面的數(shù)據(jù) 也就丟失了?。?) 舉例說明如何使用指針訪問一維數(shù)組答:使用指針訪問一維數(shù)組 ,因為數(shù)組的特性是數(shù)組在內(nèi)存中所占的空間是和它所定義的類

4、型相關的。同時數(shù)組內(nèi)的元素在內(nèi)存空間中的地址是依次排列出來的,所以使用指針訪問數(shù)組,可以定義一個指針然后將數(shù)組的第一個元素的地址賦值給指針(也就是array【0】)然后可以利用指針的自運通過指針來達到訪問呢數(shù)組任意數(shù)據(jù)的目的!例子 :-如下圖 (5) 舉例如何通過指針訪問二維數(shù)組元素答:通過指針訪問二維數(shù)組有兩種方法,第一種方法是使用像訪問一維數(shù)組時的方式定義指針然后將數(shù)組的首地址賦值給指針然后通過指針的自運算利用地址的偏移實現(xiàn)對任意數(shù)組元素的訪問,也可以使用for循環(huán)的嵌套實現(xiàn)對數(shù)組的行和列的控制進而實現(xiàn)對數(shù)組的訪遍歷;第二種方法就是定義一個數(shù)組指針然后使這個指針指向這個數(shù)組,利用數(shù)組指針的

5、運算達到數(shù)組元素的訪問。下面是兩種方法在vc6.0 IDE下面的代碼截圖 : 第一種方法:第二種方法:(6) 簡述字符數(shù)組和字符串指針的異同答:字符數(shù)組和字符串指針在定義,和使用以及內(nèi)存分配方面都有很多的不同;第一 (1)定義的方法不同,字符數(shù)組在定義時必須要有數(shù)組的長度的分配所以程序員在使用時必須要考慮到實際所要用到的長度,例如要使用有四個字母的字符數(shù)組最少要用到5個長度。 (ps:因為字符串后面都要有結(jié)束標志字符0)而字符串指針就不存在這個問題,程序員在定義時賦值可以任意的賦值而不需要考慮到內(nèi)存長度問題。 例:第二 (2)內(nèi)存分配方法不同,在程序運行時字符串指針是分配在常量區(qū)的 ,也就是字

6、符串指針所指向的字符數(shù)據(jù)在常量區(qū)也就是字符串指針在定以賦值后事無法在進行改變了。但是字符數(shù)組的空間分配實在棧區(qū)的,所以字符數(shù)組在定義后是可以多次進行賦值的。但是每個數(shù)組在創(chuàng)建時所生成的以數(shù)組名定義的指針是一個不可更改值的地址常量(ps:指向數(shù)組的第一個元素的地址)這一點一定要區(qū)分清楚。第三 (3)后期使用不同,通過上面的內(nèi)存分配原理我們不難理解在后期的使用中字符數(shù)組是可以多次賦值的,但是字符串指針的值是不能改變的!(7)簡述指針數(shù)組和數(shù)組指針的各自特點答:指針數(shù)組與數(shù)組指針本身屬性就是兩個不同的概念,指針數(shù)組本身就是一個數(shù)組,不同的是數(shù)組內(nèi)部的每個元素存儲的都是指針的類型。但是數(shù)組指針本身卻是

7、個指針,只是這個指針的指向有點特殊,它每次指向的都是二維數(shù)組的行首地址和每行的地址偏移量所以叫他數(shù)組指針。指針數(shù)組的特點是數(shù)組內(nèi)部的每個元素都是數(shù)組類型 這樣我們就利用了數(shù)組對數(shù)據(jù)的組織的方便性結(jié)合指針的高效性和方便性,從而對數(shù)據(jù)的更方便的管理和訪問及使用數(shù)組指針的特點是快捷的訪問數(shù)組而且通過數(shù)組指針我們可以直接對數(shù)組指針進行數(shù)組下標的訪問,這在指向數(shù)組的指針中是難以實現(xiàn)的例 Int array23;Int *p;Int *p2;p=&array0;Printf(“%d”,p12); /此時是違法的!p2=array;Printf(“%d”,p12); /此時是可以使用的?。?) 如何使用指針

8、訪問結(jié)構變量答:使用指針訪問結(jié)構體變量,首先定義一個指向結(jié)構體變量的指針,定義指向結(jié)構體變量的指針的方法如下Struct 結(jié)構體名,*p指針變量名;定義好指向結(jié)構體的指針后還要對他進行賦值 例:Struct student stu,*p;P=&stu;賦值后就可以通過指針訪問結(jié)構體中的成員變量了!訪問方式有兩種,使用.運算符訪問成員變量 例 (*p).成員變量名;(2) 使用-運算符訪問成員變量 例 P-成員變量名;(9) 舉例說明如何使用viod指針進行強制類型轉(zhuǎn)換答:viod指針用來指向一個抽象的數(shù)據(jù),在將它值賦值給另一個指針變量時要進行強制的類型轉(zhuǎn)換使之適合與被賦值的變量的數(shù)據(jù)類型。 例

9、 Char *p1;Void *p2;P1=(char *)p2; 或P2=(void *)p1;第二題編寫函數(shù)fun(int *p,int* lin,int* col),功能是查找二維數(shù)組中的最大值,并返回最大值所在的行列號答:源代碼和運行截圖如下 #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(數(shù)組中最大的數(shù)據(jù)是%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;編寫函數(shù)fun(char *s),功能是統(tǒng)計字符串中字符的個數(shù)答:源代碼和運行截圖如下 #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;編寫函數(shù)fun(char *s),功能是把字符串中的內(nèi)容逆置答:源代碼和運行截圖如下 #include #include void fun(char *s);int main()char array10;printf(請輸入十個字母數(shù)據(jù)我們將試著逆置他們n);gets(array);p

12、rintf(您輸入的數(shù)據(jù)為%sn,&array);fun(&array0);printf(逆置后的數(shù)據(jù)為%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;編寫函數(shù)fun(char *s1,char *s2),功能是把字符串s2中的內(nèi)容復制到字符串s1中答:源代碼和運行截圖如下 #include #include void fun(char *s1,char* s2);int main()printf

13、(請輸入兩段字符串我們將會把字符串2的數(shù)據(jù)復制到字符串1中n);printf(請輸入第一段字符串請輸入十個字符n);char array11;char array211;gets(array);printf(您輸入的第一段字符串為:%sn,array);printf(請輸入第二段字符串請輸入十個字符n);gets(array2);printf(您輸入的第一段字符串為:%sn,array2);fun(&array0,&array20);printf(復制后的數(shù)據(jù)為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);編寫函數(shù)fun(char *s1,char *s2),功能是把字符串s2的內(nèi)容鏈接到字符串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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論