2017-04-16 201 views
-3

我创建了以下阵列:为什么sizeof(str)8当字符串有26个字符?

char* myarr= "data successfully inserted"; 

当我做

sizeof(myarr) 

我得到8.为什么我得到的是?如果1个字符是1个字节,那么myarr的大小应该是26,只需要对字符进行计数?

+1

因为您正在获取*指针的大小*您应该将其声明为'char [] myarray =“data successfully inserted”;',这将节省8个字节的空间。 – EJP

+1

如果表达式'e'具有类型'T','sizeof(e)'等价于'sizeof(T)'。给定类型的所有对象都具有相同的大小。 – molbdnilo

+2

因为你滥用'sizeof',并且应该首先使用'std :: string',然后只在你确实需要时使用原始字符数组。 – StoryTeller

回答

4

在您的平台上,char指针是8个字节。这是指针变量的大小,而不是它指向的大小。如果你想要一个字符串的长度,请致电strlen(myarr)

0

因为这是系统上指针的大小。如果你想获得一个字符串的长度,你应该使用strlen()函数。

0

sizeof(myarr)不是字符串的大小,但在您的平台上的大小为char * pointe r,它给你8 bytes。数组的大小可以通过以下方式计算:strlen(myarr)

相关问题