zoukankan      html  css  js  c++  java
  • sizeof和strlen

    sizeof是单目运算,strlen是函数

    一般的用法:

    计算字符串的长度用strlen,其参数是char *

    计算数组的空间用sizeof,计算数组的个数用sizeof(数组)/sizeof(数组类型)。计算字符型数组的长度,需要减1,这个时候用strlen就好了,见下面例子中计算a1的长度。

    另外需要注意的是:

    int *p=a[10];

    sizeof(a)将是40,而sizeof(p)是4;

    另外如果把数组名作为参数传入函数,其会退化成指针,也不能用 sizeof计算数组的长度,所以经常需要把长度作为参数传进去。

    而字符串指针或者字符串数组就不一样了,strlen(*p)可以计算长度。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        printf("size of char is %d
    ",sizeof(char));
        printf("size of int is %d
    ",sizeof(int));
        printf("size of double is %d
    ",sizeof(double));
        //指针的sizeof
        char *pc="abcde";
        int *num=123;
        printf("size of pc is %d
    ",sizeof(pc)); //指针本身是4个字节         ---4
        printf("size of *pc is %d
    ",sizeof(*pc)); //指针指向的是内容是1个字节的---1
        printf("size of num is %d
    ",sizeof(num)); //---4
        printf("size of *num is %d
    ",sizeof(*num)); //--4
        //数组的sizeof,是数组所占用的内存字节数
        //这个时候,数组名不要看成指针
        char a1[]="abcef"; //这是一个数组,值分别就是abcef
        int a2[6]={2};
        //sizeof会把最后的''也算进去
        printf("size of a1 is %d
    ",sizeof(a1)); //--6
        printf("size of a2 is %d
    ",sizeof(a2)); //--24
        //strlen计算到'‘停止,所以会比sizeof少一个
        printf("strlen of a1 is %d
    ",strlen(a1)); //--5
        //strlen是计算到''才停止,由于a2没有赋值,所以下面这个打印出来的值是不确定的
        printf("strlen of a2 is %d
    ",strlen(a2));  //--24
    
        //结构体的sizeof,和内存对齐有关
        int ss[100]={1,2,3,4,5};
        printf("size of ss is %d
    ",sizeof(ss));
    
        //strlen 用来计算字符串的长度,参数是char *,不要用来做其他的计算
        char *p="abcdefg";
        printf("strlen of p is %d
    ",strlen(p)); //--7
    }
  • 相关阅读:
    vfio
    render
    数据库分类
    git 随笔
    js自定义弹窗
    bootstrap学习笔记<十一>(导航条)
    bootstrap学习笔记<十>(按钮组,导航)
    bootstrap学习笔记<九>(菜单,按钮。导航基本元素)
    bootstrap学习笔记<八>(bootstrap核心布局风格——栅格系统)
    bootstrap学习笔记<七>(图标,图像)
  • 原文地址:https://www.cnblogs.com/nasduc/p/8413445.html
Copyright © 2011-2022 走看看