c语言 字符数组 字符指针 sizeof strlen 的区别

  简单概括,strlen()返回的是字符数组或者字符指针中的元素个数,sizeof返回的是字符数组中所有元素所占的总字节数,对于字符指针,返回的只是指针所占的字节数,32位系统上都是4字节。具体来说有如下几点区别:
  1.
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned
int类型。该类型保证能容纳实现所建立的最大对象的字节大小。
  2.
sizeof是算符,strlen是函数。
  3.
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
  4.
数组做sizeof的参数不退化,传递给strlen就退化为指针了。
  5.
大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因。
  char
str[20]="0123456789";
//
str是编译期大小已经固定的数组
  int
a=strlen(str);
//
a=10;
//strlen()在运行起确定,计算的是实际长度
  int
b=sizeof(str);
//
而b=20;
//sizeof()在编译期确定,str的类型是int[20],计算的是占据内存的大小
  6.
strlen的结果要在运行的时候才能计算出来,是用来计算字符串的实际长度,不是类型占内存的大小。
  7.
sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
  char
c;
  sizeof
c;
//变量名可以不加括弧
  8.
当适用于一个结构类型或变量,
sizeof
返回实际的大小,
  当适用一静态地空间数组,
sizeof
归还全部数组的尺寸。
  sizeof
操作符不能返回动态地被分派了的数组或外部的数组的尺寸

扩展阅读:c语言指针知识点总结 ... c语言指针数组的用法 ... c语言二维数组指针 ... 指向数组的指针怎么用 ... c语言创建指针数组 ... c语言 字符串转换数字 ... 数组指针如何指向数组 ... c语言在线编译器 ... c语言字符型数组和字符串 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网