sizeof和strlen区别
1.sizeof是运算符;strlen是C语言标准库函数。
2.strlen测量的是字符串的实际长度(不包括’\0’在内的实际字符的长度);而
sizeof测量的是一个类型或一个变量所占内存大小,它的参数可以是数组、指
针、函数、数据类型等。
举例论证:
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[100]="qinlong change\0";
printf("\r\nsizeof(str)=%d\r\n",sizeof(str));
printf("\r\nsizeof(char)=%d\r\n",sizeof(char));
printf("\r\nstrlen(str)=%d\r\n",strlen(str));
}
sizeof关键字内容补充
为什么所有类型的指针sizeof(*)都为8???
假设某数据类型的一个变量占N字节,那么该数据类型的指针所指向的地址是这N
个字节中最小单元的地址,说通俗点就是起始地址,而不是说记录N字节的所有
地址。所以指针大小就是这个起始地址的大小、取决于计算机的字长与编译器。
32位计算机就是4字节,64位计算机就是8字节。
#include<stdio.h>
#include<string.h>
int main(void)
{
char *str1="change";
int a=255;
int *p_a=&a;
double f=3.14;
double *p_f=&f;
float f1=4.39;
float *p_f1=&f1;
int a1[5]={1,2,3,4,5};
printf("\r\nsizeof(p_a)=%d\r\n",sizeof(p_a));
printf("\r\nsizeof(p_f)=%d\r\n",sizeof(p_f));
printf("\r\nsizeof(str1)=%d\r\n",sizeof(str1));
printf("\r\nsizeof(p_f1)=%d\r\n",sizeof(p_f1));
printf("\r\nsizeof(&a1)=%d\r\n",sizeof(&a1));
}
sizeof运算符,不会进行赋值操作
int c=10;
sizeof(c+=1);
printf(”c=%d”,c);//输出c=10