»
(10) [] and [] space in struct
(18) C++14 smart pointer and reference counter*
(19) C++14 pthread*
(20) C++14 synchronized locker--mutex*
(24) C++ time and sleep*
(25) C++ High Precision Computation*
(27) C++14 std::string*
(31) Advanced Level C++ Tech*
C++中的数组定义:
int a[100];
在数组的定义中,最前面是数组的值类型,后面跟数组名(也就是变量的Label),最后跟上一对方括号[],方括号内是数组的长度。
在上面的例子中,a就是数组名。在这个定义中,程序会直接给a这个变量分配固定长度为100的int类型的连续存储空间。a是数组名也是一个地址,这个地址指向的就是程序分配的内存空间的开始地址。
一个知识点:数组与指针是有区别的,特别是sizeof的时候,也就是程序给分配的空间大小不同。看下面例子:
struct my_string1_struct{
int len;
char c_str[1024];//数组,立即分配与数组大小匹配的的存储空间,1024字节
} my_string1;
struct my_string2_struct{
int len;
char* c_str;//只分配用来存储地址的一个计算字的空间,4字节(32位)或者8字节(64位)
} my_string2;
my_string2.c_str=new char[1024];
对于my_string1,无论是sizeof(my_string1_struct)还是sizeof(my_string1)得到的都是是4+1024,因为数组的空间立即分配;而对于my_string2,无论是sizeof(my_string2_struct)还是sizeof(my_string2)得到的将是4+8(64位)或者4+4(32位),因为指针的sizeof,就是一个地址的大小,也就是一个计算字的大小。
另一个知识点:sizeof任意指针(非固定数组Lable)始终得到的是一个计算字的大小。