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

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

c++

4个回答

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

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

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

weixin_33900398
weixin_33900398 是的,
大约 4 年之前 回复

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问