C++ Foundation —— (10) [] and [] space in struct (Not translated)
»
    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)始终得到的是一个计算字的大小
«
--Alex.Zhang
--www.v-signon.com Learningers Co-Encouraged
Back
Personal Art: www.up-task.com Unit: Individual
中文 Русский 京ICP备19038994号-2
If the content on this website infringes upon your any rights, please contact me at 1307776259@qq.com for removal