C语言基础--sizeof运算符和strlen 函数的区别总结
一、sizeof
定义:不是函数,是一种单目运算符,
作用:是计算操作数的类型在内存中占用的字节数,以字节为单位。操作数可以是表达式、常量、变量、表达式
格式:sizeof(常量、变量或表达式)
1、sizeof运算符计算常量和变量在内存中所占字节数
(1)计算常量 int 类型
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//sizeof运算符的测试
int a = 2;
printf("所占字节数为:%d\n",sizeof(a));
[pool drain];
return 0;
}
(2)计算float类型
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//sizeof运算符的测试
float a = 2.3f;
printf("所占字节数为:%d\n",sizeof(a));
[pool drain];
return 0;
}
(3)计算double类型
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//sizeof运算符的测试
double a = 2.34;
printf("所占字节数为:%d\n",sizeof(a));
[pool drain];
return 0;
}
(4)计算字符char类型的变量以ASCII码存储占一个字节
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//sizeof运算符的测试
char a = 'H';
printf("所占字节数为:%d\n",sizeof(a));
[pool drain];
return 0;
}
(5)计算字符char类型的常量以int类型存储占四个字节
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//sizeof运算符的测试
printf("所占字节数为:%d\n",sizeof('a'));
[pool drain];
return 0;
}
2、sizeof运算符计算某一数据类型在内存中占用的字节数
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//sizeof运算符的测试
//int类型数据所占字节数
printf(" int 类型所占字节数为:%d\n",sizeof(int));
//float类型数据所占字节数
printf("float 类型所占字节数为:%d\n",sizeof(float));
//double类型数据所占字节数
printf("double 类型所占字节数为:%d\n",sizeof(double));
//char类型数据所占字节数
printf(" char 类型所占字节数为:%d\n",sizeof(char));
[pool drain];
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10] = {0};
printf("%ld\n",sizeof(a[10]));
system("pause");
return 0;
}
二、strlen ( )函数
定义:是C语言标准库函数中提供的专门计算字符串长度的函数
作用:计算字符串在内存中占用的长度,遇到 '\0' 就认为字符串结束。函数返回值是字符串中的实际长度(不包含 '\0' 在内)
格式:strlen (字符数组 ); 只能计算字符数组的长度,其他类型会报错
#include <stdio.h>
#include <stdlib.h>
int main()
{
//定义一个字符数组
char str[] = "abcdefg";
//打印出字符数组长度
printf("字符串长度为:%ld\n",strlen(str));
system("pause");
return 0;
}