一些老掉牙的知识点,就怕阴沟里翻船,全部翻出来看看。
内存对齐,sizeof,strlen类问题:
这类问题都是考基本的内存方面的问题,基本类型的数据么,主要是字符串和指针的问题,字符串主要尾部的\0,指针注意32位机器上都是4字节的。复合类型就有对齐的问题,简单来说是由成员的对大对齐单位来指定的。具体看例子:
char ss[] = "1234"; std::cout<<sizeof(ss); //输出5 std::cout<<strlen(ss); //输出4 char ass[100] = "1234"; std::cout<<sizeof(ass); //输出100 char* pss = "1234"; std::cout<<sizeof(pss); //输出4 int ai[100] = {0}; std::cout<<sizeof(ai); //输出400 std::cout<<sizeof(*ai); //输出4 struct a { short aa; short ab; short ac; }aaa; struct b { long ba; short bb; }bbb; std::cout<<sizeof(aaa); //输出6 std::cout<<sizeof(bbb); //输出8 class cc { public: void trivial(){} int a; int b; char c; }; std::cout<<sizeof(cc); //输出12