»
(10)C++14 数组及结构体中的数组存储空间
(18)C++14 智能指针及引用计数*
(19)C++14 多线程pthread*
(20)C++14 同步锁mutex*
(24)C++中的计时与等待*
(25)C++中的高精度计算*
(27)C++14 std::string*
(31)C++高级技能*
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)始终得到的是一个计算字的大小。