freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設計教程:第4章-構造類型初探-文庫吧資料

2024-10-08 16:55本頁面
  

【正文】 = *(pa+2) = = pa[2] A [ 3 ] a+3 pa+3 pa[3] a[ 3] = = *(a+3) = = *(pa+3) = = pa[3] A [ 4 ] a+4 pa+4 pa[4] a[ 4] = = *(a+4) = = *(pa+4) = = pa[4] 【 例 】 演示沒有另外定義指針,直接使用數(shù)組名作為指針的例子。 ? 在程序設計中 , 凡是用數(shù)組表示的均可使用指針來實現(xiàn) , 一個用數(shù)組和下標實現(xiàn)的表達式可以等價地用指針和偏移量來實現(xiàn) 。 *(pa+4)=123。若要將 a的最后一個元素值設為 123, 下面語句是等效的: a[ 4] =123。 ? 數(shù)組名是指針常量 , 而不是變量 , 因此表達式a=pa, a++, pa=& a都是非法操作 。 *pa=123。 ? 如果需要表示指針所指向的存儲單元的內(nèi)容 , 可使用 “ *” 運算符 , 例如 : *pa=*a。 因為 “ pa=amp。 就可使用 pa指向整型數(shù)組 a中的任何一個元素 。 例如 , 程序中有整型數(shù)組 a int a[ 5] 。 ? 指向數(shù)組的指針實際上指的是能夠指向數(shù)組中任一個元素的指針 。 ? 任何能由數(shù)組下標完成的操作,也能用指針來實現(xiàn)。 2. 自動型和寄存器型對象的初始值為隨機數(shù)。 例如: int d[ 5] ={0, 1, 2, 3, 4}。如不給自動數(shù)組置初值,程序中又沒有使用它,編譯系統(tǒng)會給出警告信息。 在上面的具體例子中 , the字符串中字符數(shù)是 3, 而 pattern的長度卻是 4。\039。 ? 上述 2種方式置初值是等價的 。\ 039。e39。h39。t39。 ? 字符數(shù)組初始化格式比較特殊 , 可以用字符串來代替 , 如: char pattern[] = the。 例如 , 【 例 】 中的存放斐波那契數(shù)列的數(shù)組中前兩個元素是已知的 ,而后面 18個元素是要計算產(chǎn)生的 , 所以對此可初始化為 : int fibonacci[20] = {0, 1}。 ? A數(shù)組元素的個數(shù)由編譯程序根據(jù)初始值的個數(shù)來確定 。 ? 如同簡單對象一樣 , 在說明數(shù)組之后就能對它的元素賦值 , 方法是從數(shù)組的第 1個元素開始依次給出初始值表 , 表中各值之間用逗號分開 , 并用一對花括號將它們括起來 。所以,根據(jù)程序輸出結果,在第 12個月結束時將一共有 377對兔子。 ? 斐波那契數(shù)列起源于 “ 兔子問題 ” 。 coutsetw(6)fibonacci[n]setw(6)。 n++ ) //計算后 18個元素值 { fibonacci[n]=fibonacci[n2]+fibonacci[n1]。 for (int n=2。 void main( ) { int fibonacci[20]={0,1}。 ? 聲明整數(shù)數(shù)組 Fibonacci[ 20]來依次存放斐波那契數(shù)列的前 20個元素值。 【 例 】 給出求斐波那契數(shù)列中前 20個元素值的問題。 ? 在C ++語言中對數(shù)組的下標變量的值是不進行合法檢查的,所以允許數(shù)組的下標越界,對此程序員必須引起注意,避免產(chǎn)生錯誤。 ? 數(shù)組下標可以是變量,這個變量稱為下標變量。 i10?!笔遣辉试S的 , 必須使用 for語句依次遍歷整個數(shù)組元素 。 例如語句 “ couta[3]; ” 輸出 a[3]的值 。 //定義字符數(shù)組具有 20個元素 //每個元素是一個字符對象 ? 數(shù)組中各元素總是從 0開始連續(xù)編號 , 直到 n1為止 。 //定義整型數(shù)組具有 10個元素 //每個元素是一個整數(shù)對象 float b[ 5] 。 ? 數(shù)組與前面介紹的各種基本數(shù)據(jù)類型對象的不同之處是:數(shù)組須由 type、 數(shù)組標志 [ ] 及長度三者綜合描述 , 它是在基本數(shù)據(jù)類型基礎上導出的一種數(shù)據(jù)類型 。 ? type是數(shù)據(jù)類型 , 可以是已經(jīng)介紹過的基本數(shù)據(jù)類型 ,也可以是即將介紹的構造類型 。 在使用一維數(shù)組之前首先必須聲明它 , 這包括數(shù)組的類型 、 數(shù)組名和數(shù)組元素的個數(shù) 。 這個數(shù)字 5代表數(shù)組 A共有 5個元素 A[0]~A[4]。 ? 房間里必須存放同一種對象 , 這樣構造出來的數(shù)據(jù)類型稱為整型數(shù)組 。 ? 如果把 A[0]~A[4]看作連續(xù)的房間 , 則可以改變房間里所放整數(shù)的值 。現(xiàn)在構造一個新的數(shù)據(jù)類型,假設它的名稱為 A,在符號 “ [ ]”內(nèi)用序號表示為 A[0]~A[4],它們的對應關系如圖 : ? 后一種表示有很大的進步 。 一維數(shù)組 ? 假如要表示 5個連續(xù)整數(shù)對象 1~5,則需要 5個整數(shù)對象名稱,例如用 X1~X5表示。 } 輸出結果如下: str=We are here!, *sp1=We are here!, *sp2=We are here! str=Go home!, *sp1=Go home!, s1=Go home! 數(shù) 組 數(shù)組是另一種構造型數(shù)據(jù)類型。 *sp2=Go home!。 sp2=sp1。s1。str=s1。 void main( ) { string s1=We are here!。x=0012FF7C,p3=0012FF7C 【 例 】 演示 string對象引用的例子。x,p3=“ p3endl。 //通過指針 p3使它們同步變化 coutx=x,*p1=*p1,amp。a。 //通過引用的指針 p2使它們同步變化 coutx=x,a=a,*p1=*p1,*p2=“ *p2endl。的順序不能錯 coutx=x,a=a,*p1=*p1,*p2=“ *p2endl。 p2=p1。 //a引用 x, 符號 amp。 intamp。 void main( ){ int x=56,*p1=amp。 【 例 】 演示指針引用的例子。另一方面,引用則是較高級地封裝了指針的特性,它不直接操作內(nèi)存地址,不可以由強制類型轉換而得,因而具有較高的安全性,也不容易產(chǎn)生由于使用指針而常常產(chǎn)生的那些不易察覺的錯誤。但要注意,引用與指針是有區(qū)別的,除了使用形式上的不同以外,在本質(zhì)上它們也有區(qū)別:指針是低級的直接操作內(nèi)存地址的機制,指針功能強大但使用不慎極易產(chǎn)生錯誤?!?。x; ” 是錯誤的,但可以聲明指向引用的指針 “ int* p=amp。是可以的),但不能聲明指針對 x的引用,即 “ int* amp??梢月暶鲗χ羔樀囊茫ㄈ?p2是指針,則 int*amp。 r=x。語句 “ intamp。引用與變量名在使用的形式上是完全一樣的,但引用本身并不是對象,只是作為一種標識對象的手段。 ? 引用通常用于函數(shù)的參數(shù)表中和函數(shù)的返回值 。 在程序中必須要確保引用是和一塊正確的存儲區(qū)域關聯(lián) , 但是可以有指向空的常量指針 , 例如這樣的聲明是正確的: int* const x=NULL。 ② 一旦一個引用被初始化指向一個對象 , 它不能被改變?yōu)閷α硗庖粋€對象的引用;常量指針一旦指向了一個對象 , 也不能更改為指向另外的對象 。 這里的逆向訪問指的是可以通過引用來修改被引用的對象 , 同樣可以通過被引用的對象來修改引用 。 ? 使用引用時沒有分配新的存儲區(qū)域 , 它本身并不是新的數(shù)據(jù)類型 。a=0012FF7C,r=25,amp。r=0012FF7C x=25,amp。x=0012FF7C,a=56,amp。 } ? 由輸出結果可見 , 引用對象和被引用對象的地址一樣 , 所以同步變化 。r=amp。a=amp。x=amp。 r=25。rendl。a ,r=r,amp。x,a=a,amp。 //定義 r是 a的引用 , r和 a的地址一樣 , 即 //和 x的地址一樣 coutx=x,amp。 //定義 a是 x的引用 , a和 x的地址一樣 intamp。 intamp。 include iostream using namespace std?!敝?, 對象 x必須事先初始化 。 使用引用語句 “ intamp?!?再選用數(shù)據(jù)類型與之配合 , 聲明方式為: 引 用 數(shù)據(jù)類型 amp。”和 “ *” 號也用掉了 。 ? 一般的標識符已經(jīng)被變量對象占用 。 ? 這就像一個作家 , 本來的名字叫 “ 張三 ” , 起個筆名叫“ 雨季 ” , 則 “ 雨季 ” 即 “ 張三 ” , “ 張三 ” 即 “ 雨季 ” 。 引 用 ? 因為引用是指針通過 “ 間接引用地址 ” 實現(xiàn)存取對象的 ,所以語法比較難懂 , 也很容易出錯 。 //將地址里的內(nèi)容輸出 delete p。i3。i++) cin*(p+i)。 //分配 3個 double型長度的地址 for(int i=0。 void main( ) { double *p。 【 例 】 演示使用 new和 delete的例子。 //定義多級指針 cout*p1,**p2,***p3endl。p1, ***p3=amp。 int *p1=amp。 可以通過下面的語句演示多級指針的定義及輸出對象 x的方法 。 ? 假如 p1 是 指 向 整 數(shù) 對 象 的 一 級 指 針 , 語句 “ int **p2=amp。 要引用這個值 , 必須強制將 void指針賦值給與值相對應的整型指針類型 。 //強制將 void指針賦值給整型指針 coutvp“,”p“,”*pendl。y。 //void指針指向 x coutvp“,”p“,”xendl。 void *vp=amp。 void main( ){ int x=56, y=65,*p=amp。 【 例 】 演示 void指針的例子。void類型不能聲明變量對象,但可以聲明 void類型的指針。 //p使用 “ ”訪問 //str的成員函數(shù) size() coutpsubstr(4,8) size=psize()4endl。 //初始化對象指針 p coutstr“ size=”()endl。 string *p=amp。 include iostream include string using namespace std。定義類對象指針的語法如下: 類名 * 對象指針名; 對象指針名 =對象的地址; ? 也可以直接進行初始化?!焙?“ *” 運算符 , 所以在實際的應用中很少用到這種特殊指針 。 ? 告訴編譯器 , *p和 p都是常量 , 都不能作為左值 。 const int* const p=amp。 4. 指向常量的常量指針 ? 也可以聲明指針和指向的對象都不能改動的 “ 指向常量的常量指針 ” , 這時必須要初始化指針 。 但這個地址里的內(nèi)容可以使用間接引用運算符 “ *” 改變其值 , 例如語句 “ *p=56。 ? 編譯器把 “ p”看作常量地址 , 所以不能作為左值 (即 “ p=”不成立 )。x。 例如: int x=5?!备淖冎羔樦赶?。 ? “ *p1”不能作為左值 ,但可以使用 “ x=”改變 x的值 , 所以說 , 這個 const僅是限制使用 “ *p1”的方式 。x。 //指向常量的指針指向常量 y //y 不能作為左值 2. 指向常量的指針 int x=45。 const int *p=amp。 ? 如果需要將指針指向常量 , 則必須使用常量指針 。 2. 指向常量的指針 ? 指向常量的指針是在非常量指針聲明前面使用 const, 如: const int *p。p”也是左值表達式 , 可以通過 “ amp。 例如 , 如果 “ p”是一個指
點擊復制文檔內(nèi)容
職業(yè)教育相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1