2 weixin 33900398 weixin_33900398 于 2016.02.06 12:21 提问

求大神帮忙解答一下c++这个小问题,,编译时出错。
c++

编译时总是不成功,我又把m[i]换为*m[i],编译成功了,但是输入一个数据系统崩溃。求大神解答。图片

4个回答

91program
91program   Ds   Rxr 2016.02.06 12:25
已采纳

m 定义成指针,但你没有给指针分配内存空间。
在没有给 m 使用 malloc 或者 new 分配内存空间时,是不能使用它的。否则,会产生访问无效指针的问题:越界访问而导致程序异常报错退出。

weixin_33900398
weixin_33900398 嗯嗯,是这样子的
接近 2 年之前 回复
91program
91program 回复weixin_33900398: 嗯,好像是我记错了。scanf 中是需要地址,cin 是不需要取地址的。
接近 2 年之前 回复
weixin_33900398
weixin_33900398 这个好像错了,换为int m[5],然后不能写为cin>>&(m[i]) ,应该是 cin>>m[i],这样编译不出错
接近 2 年之前 回复
weixin_33900398
weixin_33900398 谢谢大神的提醒,本人是个小白,初学这些东西,
接近 2 年之前 回复
91program
91program 如果确实大小就是5,可以这样定义:int m[5];然后在输入时使用 cin >> &(m[i]);
接近 2 年之前 回复
Rollchuchy
Rollchuchy   2016.02.06 12:28

你指针用法有错误,你用的编译器是VC6.0吧。

weixin_33900398
weixin_33900398 是的,
接近 2 年之前 回复
weixin_33900398
weixin_33900398   2016.02.06 12:28

谢谢大神的提醒,明白了,

qq_14982047
qq_14982047   2016.02.06 13:39

int *m[5]的含义是含有5个int *的数组,你输入的是整数,类型不匹配。要么修改数组类型为int m[5],要么用指针对数组进行初始化。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!