memset 和 fill 函数的作用,错哪了?

weixin_43163152 2019-09-12 12:41:37
#include<iostream>
#include<cstring>

using namespace std;
int main(){
int a[10],b[10],c[10],d[10],i;
memset(a,0,sizeof(a)); // 将a数组所有元素均赋值为0
for(i = 0; i < 9; i++) cout << a[i] << “ “ ;
cout << a[9] << endl;
memset(b,1,sizeof(b));// 将 b 数组所有元素均赋值为
//二进制数 2^0+2^8+2^16+2^24=16843009
for(i = 0; i < 9; i++) cout << b[i] << “ “ ;
cout << b[9] << endl;
memset(c,0,5);
//将 c 数组前 5 个字节都赋值为 0,所以只能确定 c[0]
//等于0,其他元素值不确定
for(i = 0; i < 9; i++) cout << c[i] << “ “ ;
cout << c[9] << endl;
fill(d,d+5,8);
//将 d 数组前 5 个元素都赋值为 8,其他元素值不确定
for(i = 0; i < 9; i++) cout << d[i] << “ “ ;
cout << d[9] << endl;
return 0;
}
----Configuration: mem - Win32 Debug--------------------
Compiling...
text1.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(8) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(8) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(8) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(8) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(8) : error C2059: syntax error : ';'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(12) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(12) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(12) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(12) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(12) : error C2059: syntax error : ';'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(17) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(17) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(17) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(17) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(17) : error C2059: syntax error : ';'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(21) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(21) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(21) : error C2018: unknown character '0xa1'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(21) : error C2018: unknown character '0xb0'
C:\Program Files\Microsoft Visual Studio\MyProjects\mem\text1.cpp(21) : error C2059: syntax error : ';'
执行 cl.exe 时出错.

mem.exe - 1 error(s), 0 warning(s)
...全文
101 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
_肆 2019-09-12
  • 打赏
  • 举报
回复
对一个int数组,sizeof的返回值是数组长度*4,然后你memset的时候等于长度是40,你给int a[10] a[11] a[12]....a[39]全都赋值了,不就越界了吗
  • 打赏
  • 举报
回复
修改了一下C数组的算法效果就不一样了

	int a[10], b[10], c[10], d[10], i;
	memset(a, 0, sizeof(a));   // 将a数组所有元素均赋值为0
	for (i = 0; i < 9; i++) cout << a[i] << " ";
	cout << a[9] << endl;
	memset(b, 1, sizeof(b));// 将 b 数组所有元素均赋值为
	//二进制数 2^0+2^8+2^16+2^24=16843009
	for (i = 0; i < 9; i++) cout << b[i] << " ";
	cout << b[9] << endl;
	memset(c, 0, sizeof(c) - sizeof(c)/2);
	//将 c 数组前 5 个字节都赋值为 0,其他元素值不确定
	for (i = 0; i < 9; i++) cout << c[i] << " ";
	cout << c[9] << endl;
	fill(d, d + 5, 8);
	//将 d 数组前 5 个元素都赋值为 8,其他元素值不确定
	for (i = 0; i < 9; i++) cout << d[i] << " ";
	cout << d[9] << endl;
  • 打赏
  • 举报
回复
代码中使用了中文双引号了,替换掉就解决了.

65,187

社区成员

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

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