buf[buf_len]=0;这是什么意思//char buf; //int buf_len=1024

Ghost丶 2016-11-17 09:14:25
一下子忘记了0.0
...全文
1001 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-17
  • 打赏
  • 举报
回复
这是
赵4老师 2016-11-17
  • 打赏
  • 举报
回复 2
这时越界的意思。
Ghost丶 2016-11-17
  • 打赏
  • 举报
回复
buf[buf_len]=0;这是什么意思//char buf; //int buf_len=1024
Ghost丶 2016-11-17
  • 打赏
  • 举报
回复
get 到了。谢谢各位大大
上山老人 2016-11-17
  • 打赏
  • 举报
回复
c语言里面字符串结束符'\0'的值就是0,所以buf[buf_len] = 0; 通buf[buf_len] = '\0';
赵4老师 2016-11-17
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。 “多一少一”问题占程序员常犯错误的10%以上! 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个? <、<=、==、>、>=中的哪个?
赵4老师 2016-11-17
  • 打赏
  • 举报
回复
const int buf_len=1024;
char buf[buf_len+1];
buf[buf_len]=0;
//这样就没越界

const int buf_len=1024;
char buf[buf_len];
buf[buf_len]=0;
//这样就越界了
paschen 版主 2016-11-17
  • 打赏
  • 举报
回复
引用 6 楼 linux_hacher 的回复:
[quote=引用 5 楼 paschen 的回复:] buf_len只是个变量名,有没越界还看你数组有多大,如果你数组大小是buf_len+1,那么就没越界
buf_len已经定义为int型1024 buf是char类型的数组。buf[buf_len]=0;这句话是使buf数组越界的意思?[/quote] buf[buf_len]=0 是让 buf 的第 buf_len个元素为0,有没越界看你buf数组的大小
Ghost丶 2016-11-17
  • 打赏
  • 举报
回复
引用 5 楼 paschen 的回复:
buf_len只是个变量名,有没越界还看你数组有多大,如果你数组大小是buf_len+1,那么就没越界
buf_len已经定义为int型1024 buf是char类型的数组。buf[buf_len]=0;这句话是使buf数组越界的意思?
paschen 版主 2016-11-17
  • 打赏
  • 举报
回复
buf_len只是个变量名,有没越界还看你数组有多大,如果你数组大小是buf_len+1,那么就没越界
Ghost丶 2016-11-17
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
这时越界的意思。
这是故意让数组越界吗

65,201

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧