为了账号安全,请及时绑定邮箱和手机立即绑定

动态数组的问题

动态数组的问题

C++
禾则 2018-03-19 17:37:23
我不会的有点多,感谢您的耐心。主要有2个问题,我写在了照片上。 致谢!(`•ω•´)ゞ(`•ω•´)ゞ
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

“为什么是 return 1,为什么在 if 语句中要返回值”

我猜这是在 main 函数中吧?  首先说,你应该知道这里是因为遇到了无法运行下去的情况,所以要用 return 来退出程序,对吧?   你只是不知道为什么返回 1?

我不知道你是否明白“为什么在 main 函数的结尾你总是写返回 0 呢? ”,如果老师没讲过这个的话,你想没想过这个问题呢?

main 函数的返回类型是 int,那么在 return 时就必须返回 int 值。之所以总是在结尾返回 0 是因为 main 函数的返回值是有意义的:依惯例,main 返回 0 表示程序正常结束;返回非 0 值表示程序出错退出。

所以 return 1 那里是因为程序出错返回,于是就返回了一个非 0 值 1(好像是用 1 比较多)。



“为什么是 p[i]?假定新创建了 m[n] ....”

p 是个 int 指针。new int[n] 是创建(或说分配)了一段连续 n 个 int 的空间。p = new int[n] 就是让 p 指向这个 n 个 int 的第一个。

这样的 p 虽是指针,但在用法上你完全可以按照数组的方式来通过 p 访问这段内存(因为数组就是一段连续的内存),就好象 p 是这样声明的:int p[n个];    如果你学了指针和数组的关系,就会明白这种等价用法了。

那么 p[i] 就是这段内存中的第 i 个 int,所以 cin >> p[i] 就是把输入的内容存入这个 int 中。当然这是在循环中,这代码就是把输入的数依次存入这段内存中。


至于 p = &m[0]。 按照你说的,假设这段内存用 m 数组表示,那么确实 p 的值就是 &m[0],也就是 p 指向这段内存第一个 int 的地址。 但你这里是需要通过 p 来访问这段内存中的每一个 int!  所以才用了 p[i] 这样的写法。

查看完整回答
反对 回复 2018-03-20
?
禾则

TA贡献1条经验 获得超0个赞

很感谢您,谢谢您这么详细的解答。

查看完整回答
反对 回复 2018-03-20
  • 2 回答
  • 0 关注
  • 1308 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信