strlen()函数和sizeof()函数 参考:https://blog.csdn.net/M_joy666/article/details/80471230 |
---|
一、基本定义1、sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。 注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名则可以不加括号,如 sizeof a; 但是建议使用时 均加上括号。sizeof不能返回动态地被分配的数组的大小。 2、strlen是C语言中的库函数,所在头文件为#include <string.h>其函数原型为unsigned int strlen(char *s); 其中s为指定的字符串。 注意:strlen只能用char *作为参数,它求的是字符串的实际长度,方法是从开始到遇到第一个'\0'结束。 注意:函数的值为字符串中的实际长度(不包括’\0’在内) 二、几个例子
char s[] = “ABCDEFG”; printf(“%d\n”, sizeof(s)); 屏幕输出结果为8,表明s数组的元素个数确实是8个,也就表明了”ABCDEFG”的最后确实存在着一个看不见的0! |
关于sizeof()运算符sizeof()是单目运算符,且其优先级在单目运算符中最低; sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 其有4种用法: sizeof(类型名称) sizeof(int) => 4 // 在32位系统中的结果; sizeof(char) => 1 // sizeof()运算符的运算结果的单位是:字节 sizeof(double) => 8 sizeof(变量名称) int a; short b; char c; double d; sizeof(a) => 4 sizeof(b) => 2 sizeof(c) => 1 sizeof(d) => 8 sizeof(数组名称) sizeof(数组名称)的运算结果是:这个数组所申请得到的空间的字节数! int a[1000]; double b[1000]; sizeof(a) => 4000 sizeof(b) => 8000 sizeof(表达式) sizeof(表达式)的运算结果是,这个表达式的结果的类型的长度(字节数)。 sizeof(32+407.5) => 8 sizeof()运算符在数组中的应用 int a[] = {1, 2, 3, 4, 5, 6, 7}; int i;
for(i = 0; i < sizeof(a) / sizeof(int); i++) …; sizeof(a) / sizeof(int)的作用是:sizeof(a)将得到数组a所申请的空间的字节数;sizeof(int)是数组a的每一个元素的字节数;两者相除,得到该数组元素个数! 补充sizeof(指针) char *p; sizeof(p) => 4; sizeof(*p) => 1
|
#include<stdio.h>
#include<string.h>
void main(void){
char c1[4] = {'A', 'B', 'C', '0'};
char c2[5] = {'A', 'B', 'C', '0'};
char c3[ ] = {'A', 'B', 'C', '0'};
char c4[ ] = "ABC0";
printf("sizeof(c1) = %d, strlen(c1) = %d \n", sizeof(c1), strlen(c1));
printf("sizeof(c2) = %d, strlen(c2) = %d \n", sizeof(c2), strlen(c2));
printf("sizeof(c3) = %d, strlen(c3) = %d \n", sizeof(c3), strlen(c3));
printf("sizeof(c4) = %d, strlen(c4) = %d \n", sizeof(c4), strlen(c4));
}