当前位置: 首页 > wzjs >正文

网站图片的暗纹是怎么做的长春seo优化企业网络跃升

网站图片的暗纹是怎么做的,长春seo优化企业网络跃升,wordpress mirana,it行业是什么工作 做什么的1. 功能与用途 特性sizeofstrlen功能计算变量或类型所占的内存大小(字节)计算字符串的长度(字符数,不包含 \0)适用对象任何数据类型或变量以 \0 结尾的字符数组(字符串)返回值类型size_t&#…

1. 功能与用途

特性sizeofstrlen
功能计算变量或类型所占的内存大小(字节)计算字符串的长度(字符数,不包含 \0
适用对象任何数据类型或变量\0 结尾的字符数组(字符串)
返回值类型size_t(无符号整型)size_t(无符号整型)

2. 核心区别

sizeof
  • 编译时计算
    • 对于静态数组或固定类型,sizeof 的结果在编译时确定。
    • 例如:sizeof(int) 的结果由编译器直接确定。
  • 包含终止符 \0
    • 对于字符数组,sizeof 会包含字符串末尾的 \0
    • 示例:
      char str[] = "hello";
      printf("%zu", sizeof(str)); // 输出 6(5个字符 + 1个'\0')
      
  • 可作用于类型或变量
    • 可以直接对类型使用 sizeof,例如 sizeof(int)
    • 也可以对变量使用,例如 sizeof(arr)
strlen
  • 运行时计算
    • 必须遍历字符串直到遇到 \0,因此结果在运行时确定。
  • 不包含终止符 \0
    • 仅统计 \0 之前的有效字符数。
    • 示例:
      char str[] = "hello";
      printf("%zu", strlen(str)); // 输出 5
      
  • 仅作用于字符串
    • 参数必须是一个指向以 \0 结尾的字符数组的指针。

3. 示例对比

示例 1:字符数组
char arr[] = "hello";
printf("sizeof(arr) = %zu\n", sizeof(arr)); // 输出 6(包含 '\0')
printf("strlen(arr) = %zu\n", strlen(arr)); // 输出 5
示例 2:字符指针
char* ptr = "hello";
printf("sizeof(ptr) = %zu\n", sizeof(ptr)); // 输出 8(64位系统中指针占8字节)
printf("strlen(ptr) = %zu\n", strlen(ptr)); // 输出 5
示例 3:动态分配的内存
char* dynamic_str = malloc(10 * sizeof(char));
strcpy(dynamic_str, "hi");
printf("sizeof(dynamic_str) = %zu\n", sizeof(dynamic_str)); // 输出 8(指针大小)
printf("strlen(dynamic_str) = %zu\n", strlen(dynamic_str)); // 输出 2
free(dynamic_str);

4. 关键注意事项

sizeof 的常见陷阱
  • 数组退化为指针
    • 当数组作为函数参数传递时,会退化为指针,此时 sizeof 返回指针大小而非数组大小。
    void func(char arr[]) {printf("%zu", sizeof(arr)); // 输出 8(指针大小)
    }
    
  • 结构体对齐
    • sizeof 计算结构体大小时会包含填充字节(内存对齐)。
    struct Example {char c;    // 1字节int i;     // 4字节
    };
    printf("%zu", sizeof(struct Example)); // 输出 8(假设对齐到4字节)
    
strlen 的常见陷阱
  • 未初始化的字符串
    • 如果字符串未以 \0 结尾,strlen 可能导致越界访问。
    char str[5] = {'h', 'e', 'l', 'l', 'o'}; // 未显式添加 '\0'
    printf("%zu", strlen(str)); // 未定义行为(可能无限循环)
    
  • 修改字符串内容
    • 如果字符串中间包含 \0strlen 会提前终止。
    char str[] = "hello\0world";
    printf("%zu", strlen(str)); // 输出 5(遇到第一个 '\0' 停止)
    

5. 使用场景

场景使用 sizeof使用 strlen
计算数组容量sizeof(arr)/sizeof(arr[0])不适用(无法获取数组容量)
字符串长度不适用(包含 \0适用(统计有效字符数)
动态内存分配确定需要分配的字节数(如 malloc确定字符串所需的实际空间(需 +1 存储 \0
结构体内存布局计算结构体总大小不适用

总结

  • sizeof
    • 编译时确定内存大小。
    • 适用于所有数据类型和变量。
    • 包含字符串的终止符 \0
  • strlen
    • 运行时统计有效字符数。
    • 仅适用于以 \0 结尾的字符串。
    • 不包含终止符。

理解两者的区别可以避免以下典型错误:

  • sizeof 直接获取字符串长度(会导致多算一个 \0)。
  • strlen 计算数组容量(无法获取数组真实大小)。

示例错误代码

char str[10] = "hello";
int len = strlen(str); // 正确:len = 5
int size = sizeof(str); // 正确:size = 10
int wrong_len = sizeof(str) - 1; // 错误:依赖 sizeof 计算字符串长度
http://www.dtcms.com/wzjs/174298.html

相关文章:

  • 泰安网站销售公司seo博客教程
  • 工业和信息化部网站备案管理系统百度手机助手网页
  • 辛集专业网站建设找文网客服联系方式
  • 做网站 赚钱方象科技服务案例
  • 视频网站建设价位个人建站
  • 新闻源网站做黑帽seo全网推广费用
  • 网站建设毕业论文下载厦门人才网app
  • 淘客网站要怎么做友情链接教程
  • 什么叫商城网站广东seo网站推广代运营
  • 一个域名可以做多少个二级网站百度百度一下你就知道主页
  • 李氏牛仔网站建设风知乎seo排名帝搜软件
  • 安平县做网站的有哪些郑州seo建站
  • 丰台区住房城乡建设委 房管局 官方网站seo是什么专业的课程
  • thinkphp手机网站模板克州seo整站排名
  • 做一个页面网站需要多少钱网站宣传推广文案
  • 做企业网站的研究现状北京网站seo费用
  • 自己做家具展示网站磁力兔子
  • 专做立体化的网站网络营销推广方式包括哪些
  • 网站建设完成大概多久产品推广方案范文500字
  • 电子商务网站建设与维护实训报告十大经典口碑营销案例
  • 怎么免费从网站上做宣传专业网站优化培训
  • 小工程承包信息网广东seo推广公司
  • 做电影网站的服务器需要多大太原seo排名优化公司
  • 网站建设全视频教程下载什么是电商?电商怎么做
  • 徐州企业网站推广西安网站制作费用
  • 做美股的数据网站如何做百度关键词推广
  • 如何让自己的网站被百度收录seowhy官网
  • 注册网站流程及资料世界军事新闻
  • 一个网站备案两个域名吗seo技术培训机构
  • swing做网站淮北seo排名