2012-03-14 76 views
0
char* username 

是指向字符數組(c)開頭的指針。計算c中數組的大小,僅給出指針

如何計算數組的大小,是否有函數可以做到這一點?

+7

如果它是空終止,使用'strlen' – perreal 2012-03-14 18:37:49

+0

如perreal所說,如果它是NUL終止,使用strlen。如果使用malloc分配它,則可以使用一些非標準方法查看malloc系統的內部數據。否則,你可能運氣不好。 – 2012-03-14 18:40:10

回答

2

使用strlen(用戶名)。但數組必須以'\ 0'結尾。否則,你不能這樣做。

+0

它是: )我會用它。 – spatara 2012-03-14 18:42:28

0

你不能那樣做。如果這是你分配的數組,你應該有它的大小開始。對於C和編譯器知道的內容,這只是一個指針。

+0

我沒有分配大小,這是在一個函數中,我只有一個指向開始的指針 – spatara 2012-03-14 18:41:31

+1

如果這是你的函數,請添加一個包含數組長度的參數。 – MByD 2012-03-14 18:42:25

+0

字符串是從命令行輸入的,我不想通過詢問大小來搞亂它 – spatara 2012-03-14 18:48:11

-1

如果這是一個以空字符結尾的字符串,請使用strlen來計算它是非空字符,那麼數組長度至少爲長度+ 1個字符。

如果您有數組基址指針,則可以使用sizeof(指針)來獲取內存管理器分配給它的大小。

+2

這不是'sizeof'的工作方式。 'sizeof'返回指針本身的大小。 – 2012-03-14 18:43:34

+0

你是對的,你可以使用sizeof作爲數組。像char my_string [500];然後sizeof(my_string)將返回500.但是由於OP conext在函數內,所以不起作用。 – Spidey 2012-03-14 18:51:05