2013-10-06 20 views
-2

我想獲取char指針指向的數據大小。我明白,如果我使用sizeof它返回指針的大小。但它是使用sizeof()而不是strlen()和char *而不是char數組的要求。查找char指針指向的數據大小

char *data = "Hello, World"; 
+0

「strlen」有什麼問題? – thefourtheye

+0

現有的代碼需要它是sizeof()。 strlen沒什麼問題。但是有沒有一種方法可以使用sizeof()。 – user1690394

+1

我不認爲它是可能的。 – thefourtheye

回答

2

strlen()返回字符串的長度,直到遇到0字節。換句話說,你可以有:

char buf[1024] = "abc"; 

然後strlen(buf) == 3,而sizeof(buf) == 1024

sizeof爲您提供了存儲變量所需的準確內存大小。

然而,sizeof(ptr)你使用它的方式不會給你適當的大小。無論字符串長度如何,它可能是4或8,具體取決於您的平臺 - 因爲sizeof會返回保留指針所需的內存,而不是指向的內容。

0

A char指針指向一個char.char可能跟着零個或多個char s。這完全取決於您的應用程序正在使用它。它可能指向一個空終止的字符串,在這種情況下,您可以使用strlen()。如果沒有你的問題是基本無意義的,否則答案是sizeof char其定義是1.

0

INT主(INT ARGC,CHAR *的argv []){ char *d="hello,kl"; cout << sizeof(d); //這將返回最好的方法是創建自己的 這個函數,並在需要時調用它。 }

沒有在C++中不能覆蓋sizeof操作符。所以創建一個用戶definded方法並使其計數焦炭,而是的sizeof呼喚調用函數

+0

你的意思是過分大小 – user1690394

0

爲什麼不

char data[] = "Hello World"; 
    printf("%d\n", sizeof(data)); 

代替

0

我認爲你應該做這個虛擬的方式來獲取

int i = 0; 
while (data[i] != '\0') 
     i++; 

我是可變數據中的數據大小