一、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
