數組在做形參時,自動退化為指針,即使void func(int a[]);合法,也是為了照顧習慣,實質還只是傳址。解決方法:由調用者傳入。
創新互聯專注于黑龍江網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供黑龍江營銷型網站建設,黑龍江網站制作、黑龍江網頁設計、黑龍江網站官網定制、重慶小程序開發服務,打造黑龍江網絡公司原創品牌,更為您提供黑龍江網站排名全網營銷落地服務。
用 sizeof 可以獲得數據類型或變量在內存中所占的字節數。同樣,用 sizeof 也可以獲得整個數組在內存中所占的字節數。因為數組中每個元素的類型都是一樣的,在內存中所占的字節數都是相同的,所以總的字節數除以一個元素所占的字節數就是數組的長度。
比較特別的是,比特右移()運算符可以是算術(左端補最高有效位)或是邏輯(左端補0)位移。例如,將11100011右移3比特,算術右移后成為11111100,邏輯右移則為00011100。
運算符的優先級從高到低大致是:單目運算符、算術運算符、關系運算符、邏輯運算符、條件運算符、賦值運算符(=)和逗號運算符。
C語言特點:
其一,廣泛性。C語言的運算范圍的大小直接決定了其優劣性。C語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。
其二,簡潔性。9類控制語句和32個關鍵字是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同時還能夠支持高級編程,避免了語言切換的繁瑣。
c語言中,定義數組后可以用sizeof命令獲得數組的長度(可容納元素個數)
如:
{
int?data[4];
int?length;
length=sizeof(data)/sizeof(data[0]);??//數組占內存總空間,除以單個元素占內存空間大小
printf("length?of?data[4]=%d",?length?);?//輸出length?of?data[4]=4
}
但,通過傳遞數組名參數到子函數中,以獲得數組長度是不可行的。如:
int?getLength(int[]?a){
int?length;
length=sizeof(a)/sizeof(a[0]);?//這樣是錯誤的,得到的結果永遠是1
return?length;
}
因為,a是函數參數,到了本函數中,a只是一個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據存儲空間首地址),所以,sizoef(a)的結果是指針變量a占內存的大小,一般在32位機上是4個字節。a[0]是int類型,sizeof(a[0])也是4個字節,所以,結果永遠是1。
因此,獲得數組長度,只能在數組定義所在的代碼區中,采用以上方法,才可以達到效果。
拓展資料:
數組特點:
數組是相同數據類型的元素的集合。
數組中的各元素的存儲是有先后順序的,它們在內存中按照這個先后順序連續存放在一起。
數組元素用整個數組的名字和它自己在數組中的順序位置來表示。例如,a[0]表示名字為a的數組中的第一個元素,a[1]代表數組a的第二個元素,以此類推。
對于VB的數組,表示數組元素時應注意:
下標要緊跟在數組名后,而且用圓括號括起來(不能用其他括號)。
下標可以是常量,變量,或表達式,但其值必須是整數(如果是小數將四舍五入為整數)。
下標必須為一段連續的整數,其最小值成為下界,其最大值成為上界。不加說明時下界值默認為1。
你在函數里面sizeof,其實那只是一個指針,指針sizeof就是4,所以肯定不對。如果你要在函數里面得到數組的長度,最好以另一個參數的形式傳遞進去
本文名稱:c語言函數求形參數組長度 c語言行參數
URL鏈接:http://vcdvsql.cn/article48/dosdjhp.html
成都網站建設公司_創新互聯,為您提供、全網營銷推廣、靜態網站、域名注冊、動態網站、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯