sizeof 和 strlen的一些区别(用C语言代码表示)
2016-08-12 22:18
507 查看
声明:本文所有代码均在VS2013下win32平台用C语言测试
首先sizeof是运算符,其值在编译的时候就计算好了且sizeof里面的运算结果不生效,即#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", sizeof(a++));
printf("%d\n", a);
return 0;
}输入结果为 4 0
sizeof(a++)表示一个int的字节数为4,而sizeof里面的a++并不生效,a依旧是0
sizeof的参数可以是指针,数组,结构体,函数等等
而strlen则是头文件string.h里面的函数,参数必须为char *且以'\0'结尾,遇到其他非法类型编译器会报warning
下面可以通过几组测试代码看一看sizeof以及strlen的用法区别等。备注即为结果
#include <stdio.h>
#include <string.h>
int main()
{
char *name = "abcdef";
printf("%d\n", sizeof(name[0]));//1
printf("%d\n", sizeof(&name));//4
printf("%d\n", sizeof(*name));//1
printf("%d\n", sizeof(&name + 1));//4
printf("%d\n", sizeof(name + 1));//4
printf("%d\n", sizeof(name));//4
printf("%d\n", strlen(name));//6
printf("%d\n", strlen(name + 1));//5
printf("%d\n", strlen(&name));//随机值3
printf("%d\n", strlen(&name + 1));//随机值4
getchar();
return 0;
}将char *name = "abcdef" 改为char name[] = "abcdef"
#include <stdio.h>
#include <string.h>
int main()
{
char name[] = "abcdef";
printf("%d\n", sizeof(name[0]));//1
printf("%d\n", sizeof(&name));//4
printf("%d\n", sizeof(*name));//1
printf("%d\n", sizeof(&name + 1));//4
printf("%d\n", sizeof(name + 1));//4
printf("%d\n", sizeof(name));//7
printf("%d\n", strlen(name));//6
printf("%d\n", strlen(name + 1));//5
printf("%d\n", strlen(&name));//6
printf("%d\n", strlen(&name + 1));//随机值12
getchar();
return 0;
}
首先sizeof是运算符,其值在编译的时候就计算好了且sizeof里面的运算结果不生效,即#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", sizeof(a++));
printf("%d\n", a);
return 0;
}输入结果为 4 0
sizeof(a++)表示一个int的字节数为4,而sizeof里面的a++并不生效,a依旧是0
sizeof的参数可以是指针,数组,结构体,函数等等
而strlen则是头文件string.h里面的函数,参数必须为char *且以'\0'结尾,遇到其他非法类型编译器会报warning
下面可以通过几组测试代码看一看sizeof以及strlen的用法区别等。备注即为结果
#include <stdio.h>
#include <string.h>
int main()
{
char *name = "abcdef";
printf("%d\n", sizeof(name[0]));//1
printf("%d\n", sizeof(&name));//4
printf("%d\n", sizeof(*name));//1
printf("%d\n", sizeof(&name + 1));//4
printf("%d\n", sizeof(name + 1));//4
printf("%d\n", sizeof(name));//4
printf("%d\n", strlen(name));//6
printf("%d\n", strlen(name + 1));//5
printf("%d\n", strlen(&name));//随机值3
printf("%d\n", strlen(&name + 1));//随机值4
getchar();
return 0;
}将char *name = "abcdef" 改为char name[] = "abcdef"
#include <stdio.h>
#include <string.h>
int main()
{
char name[] = "abcdef";
printf("%d\n", sizeof(name[0]));//1
printf("%d\n", sizeof(&name));//4
printf("%d\n", sizeof(*name));//1
printf("%d\n", sizeof(&name + 1));//4
printf("%d\n", sizeof(name + 1));//4
printf("%d\n", sizeof(name));//7
printf("%d\n", strlen(name));//6
printf("%d\n", strlen(name + 1));//5
printf("%d\n", strlen(&name));//6
printf("%d\n", strlen(&name + 1));//随机值12
getchar();
return 0;
}
#include <stdio.h> #include <string.h> int main() { int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//4*4=16 printf("%d\n", sizeof(a + 0));//4 printf("%d\n", sizeof(*a));//4 printf("%d\n", sizeof(a + 1));//4 printf("%d\n", sizeof(a[1]));//4 printf("%d\n", sizeof(&a));//4 printf("%d\n", sizeof(&a + 1));//4 printf("%d\n", sizeof(&a[0]));//4 printf("%d\n", sizeof(&a[0] + 1));//4 printf("%d\n", sizeof(*&a));//16 getchar(); return 0; }
相关文章推荐
- C语言中的strlen与sizeof的区别
- C语言中sizeof与strlen区别2
- C语言中sizeof与strlen区别
- C语言中的strlen与sizeof的区别
- C语言 sizeof 与 strlen 的区别与联系
- C语言:strlen与sizeof的区别
- C语言中sizeof与strlen区别
- C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
- C语言中的strlen与sizeof的区别
- C语言中strlen与sizeof的区别
- C语言sizeof 和 strlen 的区别
- C语言中sizeof和strlen的区别
- C语言中sizeof与strlen的区别是什么
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen区别
- c语言中strlen 和 sizeof的区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen的用法区别
- C语言中的strlen与sizeof的区别
- C语言-sizeof()与strlen()的区别【转】