我创建了以下阵列:为什么sizeof(str)8当字符串有26个字符?
char* myarr= "data successfully inserted";
当我做
sizeof(myarr)
我得到8.为什么我得到的是?如果1个字符是1个字节,那么myarr的大小应该是26,只需要对字符进行计数?
我创建了以下阵列:为什么sizeof(str)8当字符串有26个字符?
char* myarr= "data successfully inserted";
当我做
sizeof(myarr)
我得到8.为什么我得到的是?如果1个字符是1个字节,那么myarr的大小应该是26,只需要对字符进行计数?
在您的平台上,char
指针是8个字节。这是指针变量的大小,而不是它指向的大小。如果你想要一个字符串的长度,请致电strlen(myarr)
。
因为这是系统上指针的大小。如果你想获得一个字符串的长度,你应该使用strlen()
函数。
sizeof(myarr)
不是字符串的大小,但在您的平台上的大小为char * pointe
r,它给你8 bytes
。数组的大小可以通过以下方式计算:strlen(myarr)
因为您正在获取*指针的大小*您应该将其声明为'char [] myarray =“data successfully inserted”;',这将节省8个字节的空间。 – EJP
如果表达式'e'具有类型'T','sizeof(e)'等价于'sizeof(T)'。给定类型的所有对象都具有相同的大小。 – molbdnilo
因为你滥用'sizeof',并且应该首先使用'std :: string',然后只在你确实需要时使用原始字符数组。 – StoryTeller