strlen()被null终止?那么当strlen(c)和strlen()是什么时候,char c [] = {'1','1'}和char d [] = {'1','1','\ 0'}如何得到相同的输出2? (d)被使用?strlen如何为{'1','1'}和{'1','1',' 0'}给出相同的输出?
回答
前者是未定义的行为;它可以输出2,也可以输出500,终止你的程序或破坏你的电脑。
这只是你得到运气。
strlen()函数将开始计数直到它找到'\ 0'。
在您的d字符串中,将'\ 0'放在字符串的末尾。 strlen func然后返回2个字符。
在你的第二个函数里,在你的记忆里你有很多'\ 0',并且你的c字符串结尾的字符是'\ 0'。所以,它返回相同的值;)
如果因为未定义的行为而发生作用,我会称之为*糟糕的运气。 – user694733
strlen(d)
将返回2,没有问题。
strlen(c)
将返回> = 2 如果字符在位置c + 2 ==“\ 0”,那么你是幸运的,strlen(c)
回报2,但你不能有任何的保障!
\ 0标记字符串的终止字符不为NULL。 strlen在给出一个字符串时不计算终止字符,它会计数直到找到\ 0,然后停止并返回。
同样在写作时
char a [] =“hello”;
这将分配6个内存空间5用于hello和1用于\ 0。 在大多数情况下strlen(c)不会是2
除了你以外,没有人在讨论'NULL'。 –
strlen()被null终止?
我认为使用错误的术语会产生一些混淆:“strlen”是C标准函数的名称;函数不是“由null终止”。如果你的意思是strlen应该用于以空字符结尾的字符序列,那么“null-terminated”意味着'\ 0'是决定序列结束的最终哨兵字符,那么是的:strlen会这样做。
请注意,NULL(全部大写)通常定义为0(在stddef.h中)的别名。
然而,上面所说的,在你的例子中,字符'c'和'd'的两个数组有不同的内容。前者包含两项,后三项。 strlen的有效输入只是你的'd'数组。你的数组'c'不是以null结尾的。
strlen返回正确的长度的原因无论如何是'c'被分配的区域包含,纯粹的机会,在数组的最后一个项目后的'\ 0'。
- 1. glOrtho(-1,1,-1,1,-1,1)完成什么?
- 2. x [1,1]和x.item(1,1)之间的区别是什么?
- 3. jQuery - 给出一个json响应,数组如下:[1,1] [2,3],[5,1]如何迭代?
- 4. Javascript Canvas getImageData颜色(x,y,1,1).data
- 5. Strlen没有给出正确的输出
- 6. 在此Javascript代码中返回-1,1和0是什么意思?
- 7. 为什么值输出为相同A [0],&A,和* A?
- 8. 如何使用CORDIC计算[-1,1]以外的数字的指数?
- 9. Tensorflow - 任何输入都会给出相同的输出
- 10. 错误strlen的输出
- 11. CPP和Java给出不同的输出
- 12. GCC和TC给出不同的输出?
- 13. 给多个SKNode随机生成SKTexture给出相同的输出
- 14. 为什么发电机给出相同的输出,如果没有分配给
- 15. strlen给出意想不到的输出C
- 16. PHP和getimagesize()函数返回1,1(宽度,高度)
- 17. 相同的程序给出不同的输出每次运行
- 18. 向量在出界时给出0作为输出?
- 19. 错误:(1,1)错误:内容不被允许在序言
- 20. 相同的查询将给出不同的输出在MSSQL和Hibernate 3个
- 21. 为什么在C睡眠后(5)给我输出相同的输出?
- 22. 为什么__len __()给出s = []和s = [[]]的不同输出结果?
- 23. 为什么str.count('')和len(str)给出不同的输出?
- 24. Excel和R为什么给出不同的ANOVA输出?
- 25. 为什么总是给输出0 0 0?
- 26. 为什么不通过context.restore()将上下文的比例设置回(1,1)?
- 27. 单个条件给出与WHERE条件相同的输出
- 28. 批次随机函数给出相同的第一输出
- 29. glCreateShader给出相同的ID
- 30. std :: cout给出不同的输出qDebug
'\ 0'是字符串终止的符号不为空 –
可能在'c'数组中的第二个元素后面恰好有一个0。 –
@AlexandruCimpanu ** C99标准**调用字符串“null-terminated”(例如p303)。 OP指的是空字符,而你可能正在考虑空指针或NULL(它不能保证是指针)。 –