C语言一个关于sizeof和strlen的问题

#include<stdio.h>
int main()
{
char buf[]="123456\n";
int size,len;
size=sizeof(buf);
len=strlen(buf);
printf("size=%d,len=%d\n",size,len);
return 0;
}
求大神帮我看下为什么结果是size=8,len=7

第1个回答  2019-02-13
strlen(a)是求的该数组的元素个数所以当a[
]="AB"时,strlen(a)的结果是2;sizeof(a)是求数组占的空间的,当a[
]="AB"时,它实际的空间就是3,因为最后还有自带的一个结束符,也占用一个空间。比如a[]="asdf",那么sizeof(a)的结果就是5而不是4。
第2个回答  2013-05-03
常量字符串后面系统默认会加上一个'\0'作为字符串结束符,所以
char buf[]="123456\n";定义数组的时候,会算上字符串结束符,也就是说buf数组的长度其实是8,sizeof作用于数组时计算的是数组占用的内存字节数,所以,结果是8
而strlen计算数组长度时是不包含字符串结束符的,所以,结果是7本回答被提问者采纳
第3个回答  2013-05-03
实际上这个涉及到内存了, sizeof指的是占用内存的大小,而strlen指的是字符串里面字符数,"123456\n" 字符串后面是有个隐形的 ‘\0’ 字符的,标识字符串结束,所以在内存中占了8个字符。明白否?如果你定义的时候直接定义char buf[20]="123456\n";那么size=sizeof(buf); size=20了。
第4个回答  2013-05-03
strlen测字符长度 不包括结束符'\0'
sizeof测所占空间 包含结束符'\0'

在C语言求字符长度的问题,strlen与sizeof怎么计算出来的长度不是我们...
sizeof(p)计算的是p变量的大小 由于p是指针,p的大小就是4字节,它不是求内容的长度,而是变量p本身的大小 同理q指针也一样 你可以试一下将指针指向的内容长度再增长,sizeof(p)仍然是4 字符指针:分配长度用strlen计算后+1 如果算数组分配长度(数组声明时的空间大小,不管字符数组是否填满)用size...

sizeof与strlen区别
在编程中,`sizeof` 和 `strlen` 是两个常用的函数,它们分别用于获取变量或类型占用的内存大小以及字符串的长度。`sizeof` 是一个运算符,用于获取类型或变量所占的内存空间大小,而 `strlen` 是一个函数,用于计算以 `'\\0'` 结尾的字符串的长度。`sizeof` 返回的结果是 `size_t` 类型,一...

c语言编程题,关于sizeof。具体是怎么来的?如果是strlen的话结果是什...
sizeof()是单目运算符,功能是返回括号内那货占用的字节数。括号内是char s[],数组,占用字节数取决于初始化时赋值的内容。初始化赋值的内容是"\\123\\\\100a\\t"下面要说的,你最好比对着课本来看。关于字符,有两种表示形式,普通形式(例如'A'),还有转义字符形式。转义字符是由前导和后缀组成。前...

C语言问题???sizeof,strlen,a0\\OaO\\0什么意思???
---sizeof(a)表示字符组a里元素所占用的字节大小a里有9个元素每个元素占1个字节所以 第一个答案是9。---strlen(a)表示字符组a里的长度也就是有多少个元素strlen遇到'\\0'才会退出。。也就是不算上‘\\0'所以结果是8,。。strlen这个函数是为了方便计算字符串的长度。。

strlen和sizeof的区别
strlen和sizeof在C语言中都是常用的函数,区别在于它们的用途、返回值和计算方式。sizeof是一个运算符,而strlen是一个函数。sizeof用于计算数据类型或变量的大小,而strlen用于计算字符串的长度。sizeof可以计算类型或变量的长度,而strlen只能用于字符串。当sizeof用于类型或变量时,它返回的是该类型或...

关于c 中求字符串长度的函数strlen的小问题
在编程中,`strlen`是用于计算字符串长度的函数。该函数接受一个字符指针作为参数,并持续执行直到遇到空格或其他特定字符停止。例如,`strlen`在遇到数组c[2][3]中的元素时会返回3,因为数组中的元素数量为3。`sizeof`函数则是用来计算系统分配给数组的字节数量。这是两个不同的概念:`strlen`关注的...

C语言中,sizeof和strlen都是表示字符串长度的吗?谁能告诉我它们两者的区...
sizeof 计算的是数据在内存中存放的长度,单位是“字节”,可以对任何数据类型做运算,而且它是一个运算符(和+、-、*、\\类似);当对字符串计算时,包含末尾的"\\0";当对字符数组操作时,返回的是数组的总的长度,也就是当把数组作为参数传递给sizeof时是不会退化的。strlen 计算的是字符串的...

关于sizeof和strlen !!!
首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解 str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=sizeof(char*)=4,在C\/C++中一个指针占4个字节 str2是一个...

这道c语言题目为什么用sizeof运行后是4但是strlen则什么都没有_百度知...
= "abcdefgh";char * p = buf;后面的不用变。这样就不会什么都没有了。应该显示0。因为strlen返回'\\0'字符所在的位置。不知道我这样说你能否理解。我理解win32的常量字符串也花费了很长时间。不要用sizeof去获取一个字符串的长度!sizeof仅仅获得目标的静态长度,也就是在栈上占用的字节数。

C语言中sizeof和strlen函数区别在哪?
1、操作 strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\\0'停止。而sizeof()返回的是变量声明后所占的内存数,不是实际长度。2、参数类型 sizeof可以用类型做参数,strlen...

相似回答