【学习交流】关于memset的使用问题

brk1985 2011-07-26 03:39:15


#include <iostream>
using namespace std;

int main(){
int** pint = NULL;
pint = new int* [5];
for(int i=0;i<5;i++){
pint[i] = new int[10];
memset(pint[i], -1 , 10);//①为什么不能准确赋初始值?测了下发现初始值为0是可以的
}
for(int i=0;i<5;i++)
for(int j=0;j<10;j++)
printf("%d\t",pint[i][j]);

//②以下为什么运行会出错???怎么解决?
char** pstr = NULL;
pstr = new char* [5];
for(int i=0;i<5;i++){
pstr[i] = new char[10];
memset(pstr[i], '*' , 10);
}
for(int i=0;i<5;i++)
for(int j=0;j<10;j++)
printf("%s\t",pstr[i][j]);
return 0;
}



①为什么不能准确赋初始值?测了下发现初始值为0是可以的
②以下为什么运行会出错???怎么解决?
...全文
83 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
至善者善之敌 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhao4zhong1 的回复:]
memset(pint[i], -1 , 10);
改为
memset(pint[i], -1 , 10*sizeof(int));


printf("%s\t",pstr[i][j]);
改为
printf("%c\t",pstr[i][j]);
[/Quote]

++1
赵4老师 2011-07-26
  • 打赏
  • 举报
回复
memset(pint[i], -1 , 10);
改为
memset(pint[i], -1 , 10*sizeof(int));


printf("%s\t",pstr[i][j]);
改为
printf("%c\t",pstr[i][j]);
bdmh 2011-07-26
  • 打赏
  • 举报
回复
memset(pint[i], -1 , sizeof(int)*10);
stjay 2011-07-26
  • 打赏
  • 举报
回复
memset(pint[i], -1 , 10 * sizeof(int));

printf("%c\t",pstr[i][j]);

65,186

社区成员

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

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