美文网首页
c 语言中的sizeof(数组名)和sizeof(指针)

c 语言中的sizeof(数组名)和sizeof(指针)

作者: SnC_ | 来源:发表于2020-11-14 18:16 被阅读0次

    转载自文章

    写了个简单的测试代码来验证这个问题。

    #include <stdio.h>
     
    int main(int argc, char *argv[])
    {
        char buf0[10];
        char buf1[2][5];
        char *buf2[]={"12345","12345","12345","12345","12345","12345"};
        char **tmp = buf2;
        
        
        char *p = buf0;
        
        printf("sizeof(buf0)=%d,sizeof(p)=%d\r\n",sizeof(buf0),sizeof(p));
        printf("sizeof(buf1)=%d,sizeof(buf1[1])=%d\r\n",sizeof(buf1),sizeof(buf1[1]));
        printf("sizeof(buf2)=%d,sizeof(buf2[1])=%d\r\n",sizeof(buf2),sizeof(buf2[1]));
        printf("sizeof(tmp)=%d\r\n",sizeof(tmp));
        
        return 0;
    }
    

    输出结果为:
    sizeof(buf0)=10,sizeof(p)=4
    sizeof(buf1)=10,sizeof(buf1[1])=5
    sizeof(buf2)=24,sizeof(buf2[1])=4
    sizeof(tmp)=4
    通过上面的例子可以得出结论:

    sizeof(数组名):返回数组所有元素占有的内存空间字节数。

    sizeof(指针) :返回计算机系统的地址字节数,如果是32位系统,返回4,16位系统返回2。

    注:buf2是指针数组,数组的元素是指针,所有sizeof(buf2[1])返回值是4。

    sizeof("XXXXX")应该是多少呢?

    验证:printf("the len=%d\r\n",sizeof("123456789"));

    结果:the len=10
    对于“”中的字符串,默认后面还有一个\0,所以实际的长度要+1.

    相关文章

      网友评论

          本文标题:c 语言中的sizeof(数组名)和sizeof(指针)

          本文链接:https://www.haomeiwen.com/subject/oiuwbktx.html