strlen与sizeof的区别

strlen与sizeof的区别在了解 strlen 与 sizeof 的区别之前 先来了解下字符数组 chara C 不含空字符 0 chara1 C 0 显式包含空字符 0 chara2 C 自动添加 0 字符串结束的空字符 a1 a2 chara3 4 C 错误 没有空间存放空字符

一、strlen与sizeof的区别:

  • 1、strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。
  • 2、sizeof计算声明后所占的内存数(字节大小),不是实际长度
  • 3、sizeof是一个取字节运算符,而strlen是个函数。
  • 4、sizeof的返回值=字符个数*字符所占的字节数

二、代码示例:

#include “stdafx.h”  #include “stdio.h”  #include “string.h”  int main(int argc, char* argv[]) { 
    //字符串数组方式  int a1; int b1; char str1[11]=0;//字符串数组定义时注意为字符串个数+1  a1=sizeof(str1);//a1=11,统计到字符串结束符’\0’为止  b1=strlen(str1);//b1=10,统计到字符串结束符之前  printf(”a1=%d,b1=%d\n”,a1,b1); //字符串指针方式  int a2; int b2; int c2; char *str2=0; a2=sizeof(str2);//a2=4;str为指向字符串常量的字符串指针  b2=strlen(str2);//b2=10;  c2=sizeof(*str2);//c2=1;*str2表示第一个字符  printf(”a2=%d,b2=%d,c2=%d\n”,a2,b2,c2); //未定义字符串大小方法  int a3; int b3; char str3[]=0; a3=sizeof(str3);//a3=11;  b3=strlen(str3);//b3=10;  printf(”a3=%d,b3=%d\n”,a3,b3); //整型数组,strlen只能用于字符串  int a4; int a[]={ 
   1,2,3,4,5,6,7,8,9,0}; a4=sizeof(a);//a4=字符个数*字节数  printf(”a4=%d\n”,a4); return 0; } 

sizeof:

#include “stdafx.h”  #include “stdio.h”  void fun(int a[100]) { 
    printf(%d\n”,sizeof(a));//结果为4,而非400  } void fun1(int *p) { 
    printf(%d\n”,sizeof(p));//结果为4  } int main(int argc, char* argv[]) { 
    int a[10]; int *b[10]; int (*c)[10]; int *p; int i[100]; int *q=i; printf(%d\n”,sizeof(a));//40=4*10  printf(%d\n”,sizeof(b));//指针数组,装有10个指向整型变量的指针,本质上还是个数组,故其大小为10*4=40  printf(%d\n”,sizeof(c));//数组指针,大小为4  printf(%d\n”,sizeof(p));//指针大小,不管什么类型的指针,都占4个字节大小  fun(i);//4 不是400  fun(q);//4 不是400  return 0; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228020.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:00
下一篇 2026年3月16日 下午8:01


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号