上代码:
// test_max.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main(void) { string strArr1[]={"Cjc ","is ","a "}; string *pStrArr1=new string[2]; pStrArr1[0]="good"; pStrArr1[1]="boy."; cout<<"string type‘s length is "<<sizeof(string)<<endl; for(int i=0;i<sizeof(strArr1)/sizeof(string);i++) { cout<<strArr1[i]; } for(int i=0;i<sizeof(pStrArr1)/sizeof(string);i++) { cout<<pStrArr1[i]; } system("pause"); return 0; }
有以上的结果可知:在VS2010 windows7 32位操作系统中string类的长度为32字节(与string的实现有关)
注意:sizeof不能求出动态分配的内存块大小,所以sizeof(pStrArr1)的结果为4
故得到如图所示的结果
修改后的代码
将
for(int i=0;i<sizeof(pStrArr1)/sizeof(string);i++)
改为
for(int i=0;i<sizeof(*pStrArr1)*2/sizeof(string);i++)
C++中sizeof(string)
时间: 2024-10-25 15:02:01