zoukankan      html  css  js  c++  java
  • sizeof()的一些思考,地址里到底存了哪些信息

    1.sizeof()函数的一些思考

    测试代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        int* nptr1;
        int* nptr2 = NULL;
        int* nptr3 = malloc(5*sizeof(int));//重点是这个,sizeof(nptr3)求得的长度是4
        int  nptr4[5];
        int  nptr5[5] = {1,2,3,4,5};
    
        int length1 = sizeof(nptr1);
        int length2 = sizeof(nptr2);
        int length3 = sizeof(nptr3);
        int length4 = sizeof(nptr4);
        int length5 = sizeof(nptr5);
    
        printf("length1 = %d\n", length1);
        printf("length2 = %d\n", length2);
        printf("length3 = %d\n", length3);
        printf("length4 = %d\n", length4);
        printf("length5 = %d\n", length5);
    
        return 0;
    }

    结果如下:

    结论:
        int* nptr3 = malloc(5*sizeof(int)); // sizeof(nptr3)求得的长度是4,因为只是定义个一个int型指针,所以长度是4
        int  nptr4[5];                                // sizeof(nptr4)求得的长度是20

    sizeof()这个函数到底是怎么实现的,为什么sizeof(nptr4)是20,为什么sizeof(nptr3)是4,难道地址和地址还不一样?

    2.地址里到底存了哪些信息

    为什么sizeof()的长度会不一样,地址和地址不一样,还是地址里存有长度信息? 

  • 相关阅读:
    道路和航线
    Sorting It All Out
    Sightseeing Cows(0/1分数规划+Spfa判负环)
    【模板】缩点
    间谍网络
    Tarjan算法专练
    数论知识点总结
    博客迁移到博客园
    第一届CCPC河南省赛
    find程序实现
  • 原文地址:https://www.cnblogs.com/wufengv5/p/3095840.html
Copyright © 2011-2022 走看看