以文本方式查看主題

-  曙海教育集團論壇  (http://www.scb-ycwb.com/bbs/index.asp)
--  C語言開發(fā)  (http://www.scb-ycwb.com/bbs/list.asp?boardid=62)
----  C語言難點分析  (http://www.scb-ycwb.com/bbs/dispbbs.asp?boardid=62&id=2401)

--  作者:wangxinxin
--  發(fā)布時間:2010-12-10 11:10:48
--  C語言難點分析
變量作用域和存儲類別:

了解了基本的變量類型后,我們要進(jìn)一步了解它的存儲類別和變量作用域問題。

變量類別 子類別
局部變量 靜態(tài)變量(離開函數(shù),變量值仍保留)
自動變量
寄存器變量
全局變量 靜態(tài)變量(只能在本文件中用)
非靜態(tài)變量(允許其他文件使用)

換一個角度

變量類別 子類別
靜態(tài)存儲變量 靜態(tài)局部變量(函數(shù))
靜態(tài)全局變量(本文件)
非靜態(tài)全局/外部變量(其他文件引用)
動態(tài)存儲變量 自動變量
寄存器變量
形式參數(shù)

extern型的存儲變量在處理多文件問題時常能用到,在一個文件中定義 extern型的變量即說明這個變量用的是其他文件的。順便說一下,筆者在做課設(shè)時遇到out of memory的錯誤,于是改成做多文件,再把它include進(jìn)來(注意自己寫的*.h要用“”不用<>),能起到一定的效用。static 型的在讀程序?qū)懡Y(jié)果的試題中是個考點。多數(shù)時候整個程序會出現(xiàn)多個定義的變量在不同的函數(shù)中,考查在不同位置同一變量的值是多少。主要是遵循一個原則,只要本函數(shù)內(nèi)沒有定義的變量就用全局變量(而不是main里的),全局變量和局部變量重名時局部變量起作用,當(dāng)然還要注意靜態(tài)與自動變量的區(qū)別。

函數(shù):

對于函數(shù)最基本的理解是從那個叫main的單詞開始的,一開始總會覺得把語句一并寫在main里不是挺好的么,為什么偏擇出去。其實這是因為對函數(shù)還不夠熟練,否則函數(shù)的運用會給我們編程帶來極大的便利。我們要知道函數(shù)的返回值類型,參數(shù)的類型,以及調(diào)用函數(shù)時的形式。事先的函數(shù)說明也能起到一個提醒的好作用。所謂形參和實參,即在調(diào)用函數(shù)時寫在括號里的就是實參,函數(shù)本身用的就是形參,在畫流程圖時用平行四邊形表示傳參。

函數(shù)的另一個應(yīng)用例子就是遞歸了,筆者開始比較頭疼的問題,反應(yīng)總是比較遲鈍,按照老師的方法,把遞歸的過程耐心準(zhǔn)確的逐級畫出來,學(xué)習(xí)的效果還是比較好的,會覺得這種遞歸的運用是挺巧的,事實上,著名的八皇后、漢諾塔等問題都用到了遞歸。

例子:
 



數(shù)組:

分為一維數(shù)組和多維數(shù)組,其存儲方式畫為表格的話就會一目了然,其實就是把相同類型的變量有序的放在一起。因此,在處理比較多的數(shù)據(jù)時(這也是大多數(shù)的情況)數(shù)組的應(yīng)用范圍是非常廣的。

具體的實際應(yīng)用不便舉例,而且絕大多數(shù)是與指針相結(jié)合的,筆者個人認(rèn)為學(xué)習(xí)數(shù)組在更大程度上是為學(xué)習(xí)指針做一個鋪墊。作為基礎(chǔ)的基礎(chǔ)要明白幾種基本操作:即數(shù)組賦值、打印、排序(冒泡排序法和選擇排序法)、查找。這些都不可避免的用到循環(huán),如果覺得反應(yīng)不過來,可以先一點點的把循環(huán)展開,就會越來越熟悉,以后自己編寫一個功能的時候就會先找出內(nèi)在規(guī)律,較好的運用了。另外數(shù)組做參數(shù)時,一維的[]里可以是空的,二維的第一個[]里可以是空的但是第二個[]中必須規(guī)定大小。
冒泡法排序函數(shù): 
void bubble( int a[] , int n) 

    
int i,j,k; 
    
for (i=1,i<n;i++
    
for (j=0;j< n-i-1; j++
    
if (a[j]>a[j+1]) 
    { 
        k
=a[j]; 
        a[j]
=a[j+1]; 
        a[j
+1]=k; 
    } 

選擇法排序函數(shù):
void sort( int a[] , int n) 
...
    
int i,j,k,t; 
    
for (i=0,i< n-1 ;i++
    
...
        k
=i ; 
        
for ( j=i+1 ;j<n;j++
            
if (a[k]<a[j]) k=j ; 
        
if ( k!=i ) 
        
...
            t
=a[i]; 
            a[i]
=a[k]; 
            a[k]
=t; 
        }
 
    }
 
}
 


主站蜘蛛池模板: 亚洲午夜无码久久久久| 久久久久99精品成人片我成大片| 亚洲av熟女高潮一区二区| 性猛交xxxx| 中文字幕丰满乱子伦无码专区| 一区二区三区免费在线视频 | 亚洲国产日韩在线一区| 中文字幕乱码人妻二区三区| 亚洲少妇一区二区| hs视频在线观看| 国产精久久久久久| 激情五月婷婷网| 欧美视频一区二区在线| 天天干免费视频| 亚洲精品久久久久久久蜜桃| www欧美在线| 三上悠亚在线一区| 中国av免费看| 97超碰国产在线| 国产精品永久久久久久久久久| 九九热久久免费视频| 欧美成人一二三区| 精品成人av一区二区在线播放| 欧美日韩一区二区三区四区五区六区| 天天色综合av| 91日韩精品视频| 国产一二三av| 欧美日韩在线国产| 亚洲爆乳无码一区二区三区| 777一区二区| 精品人妻无码一区二区| 日韩精品手机在线| 中文字幕亚洲影院| www欧美激情| 毛片视频网站在线观看| 午夜不卡福利视频| 99成人在线观看| 精品人妻久久久久一区二区三区| 手机在线中文字幕| 91麻豆国产在线| 久草手机在线观看|