我想獲取char指針指向的數據大小。我明白,如果我使用sizeof它返回指針的大小。但它是使用sizeof()而不是strlen()和char *而不是char數組的要求。查找char指針指向的數據大小
char *data = "Hello, World";
我想獲取char指針指向的數據大小。我明白,如果我使用sizeof它返回指針的大小。但它是使用sizeof()而不是strlen()和char *而不是char數組的要求。查找char指針指向的數據大小
char *data = "Hello, World";
strlen()
返回字符串的長度,直到遇到0字節。換句話說,你可以有:
char buf[1024] = "abc";
然後strlen(buf) == 3
,而sizeof(buf) == 1024
。
sizeof
爲您提供了存儲變量所需的準確內存大小。
然而,sizeof(ptr)
你使用它的方式不會給你適當的大小。無論字符串長度如何,它可能是4或8,具體取決於您的平臺 - 因爲sizeof
會返回保留指針所需的內存,而不是指向的內容。
A char
指針指向一個char.
那char
可能跟着零個或多個char
s。這完全取決於您的應用程序正在使用它。它可能指向一個空終止的字符串,在這種情況下,您可以使用strlen()
。如果沒有你的問題是基本無意義的,否則答案是sizeof char
其定義是1.
INT主(INT ARGC,CHAR *的argv []){ char *d="hello,kl";
cout << sizeof(d);
//這將返回最好的方法是創建自己的 這個函數,並在需要時調用它。 }
沒有在C++中不能覆蓋sizeof操作符。所以創建一個用戶definded方法並使其計數焦炭,而是的sizeof呼喚調用函數
你的意思是過分大小 – user1690394
爲什麼不
char data[] = "Hello World";
printf("%d\n", sizeof(data));
代替
我認爲你應該做這個虛擬的方式來獲取
int i = 0;
while (data[i] != '\0')
i++;
我是可變數據中的數據大小
「strlen」有什麼問題? – thefourtheye
現有的代碼需要它是sizeof()。 strlen沒什麼問題。但是有沒有一種方法可以使用sizeof()。 – user1690394
我不認爲它是可能的。 – thefourtheye