C C 檢視變數大小和陣列長度

2021-09-23 19:37:58 字數 2028 閱讀 5891

這裡總結一下c/c++中檢視變數大小,陣列長度等的方法。

本文**在windows 8.1下使用dev-c編寫,測試。

1//標頭檔案

2#include //c++

3//或者

4#include//c

5//函式原型

6externunsignedintstrlen(char*s)

strlen做的是乙個計數器的工作,函式傳入乙個char型別指標,從指標處開始掃瞄,直到碰到

字串結束符『\0』為止,返回計數器值(\0不計算在內)。

注意點:準確的說是c格式字串的注意點,注意最後是否『\0』結束符。不然,可能造成記憶體越界。

stl中,容器的長度等,建議使用其自帶的成員函式檢視,size()通常是檢視使用大小的(不同的容器有不同實現)。

length()是string獨有的,檢視string中字串長度,後來為了統一介面,string也加入了size()

內部實現原理和strlen相同,但是由於stl的封裝性,比c風格字串要安全。

length()和size()的實現是一樣的,所以,為了增加**重用性,建議使用size()

通常而言,有empty(),意味著如果只是檢視容器是否為空,則建議使用empty()。但有人反對,依據是下面的**:

1boolempty()const

2

顯然,這個寫法的話,二者的複雜度沒有區別。但是也有不同的實現,如下:

1bool

2empty()const

3

這回就明白了,之所以建議使用empty()是因為不同的容器有不同的實現。有的容器empty()實現可能是o(1)的複雜度。所以,無論如何,使用empty()肯定不是壞事

很多人可能被誤導,以為sizeof是函式,事實上sizeof是乙個操作符,不信的話可以去掉所有標頭檔案,看看sizeof可否通過編譯。

1//sizeof(型別說明符,陣列名或表示式);

2//或sizeof 變數名

3sizeof(object);//sizeof(物件);

4sizeof(type_name);//sizeof(型別);

5sizeofobject;//sizeof 物件;

注意:

線性表長度和陣列長度

陣列的長度是指存放線性表的儲存空間的長度,儲存分配後這個量一般是不變的。有個別同學可能會問,陣列的大小一定不可以變的嗎?我怎麼看到有書中談到可以動態分配的一維陣列。是的,一般高階語言,比如c,vb,c 都可以用程式設計手段實現動態記憶體分配陣列,不過著會帶來效能上的 損耗。線性表的長度是線性表中元素...

C C 陣列長度的獲取

在c 裡,字串長度可以用strlen 函式獲取,但是c 不支援陣列的長度直接獲取,所以我們要用陣列的大小來計算出它的長度 主要是根據程式執行時給定義的變數分配記憶體大小是固定的,我們用sizeof 獲取變數大小,比如 int型陣列就用陣列大小除以單個int變數的大小,這樣就能得到陣列的長度。c 中我...

C 使用變數作為陣列長度

部落格 c 中一般是不能使用變數作為乙個陣列的長度的,必須使用常量。這是因為陣列作為c 的內建資料型別,其空間分配在棧記憶體中,這部分空間的大小在編譯時就要確定,不能等到執行時再分配。常量的值在編譯時就能得到,而變數的值在執行時才能確定。但是仍然有辦法使用變數作為陣列的長度 繞過棧記憶體,將陣列空間...