C++基础 —— (10)C++14 数组及结构体中的数组存储空间
»
    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)始终得到的是一个计算字的大小
«
——张人杰·www.v-signon.com学习者共勉
返回上一页
备案号:京ICP备19038994号-2
个人作品网站:www.up-task.com 主办:个人 English
网站内容如有侵权,请联系删除:1307776259@qq.com