C++中执行new int[3]操作会对int指针产生什么作用?
关于new int[3]的作用和对int指针的影响
你现在接触的是C++里动态数组的申请语法,逻辑很好理解:
- 不带方括号的
new 类型是申请单个对应类型的内存空间,比如new int就是申请1个能存整数的内存块,返回的int*指针指向这个内存块的首地址 - 带方括号的
new 类型[N]是一次性申请连续N个对应类型的内存空间,你写的new int[3]就是申请了一块能存3个整数的连续内存,相当于一个长度为3的动态int数组,返回的int*指针指向这块连续内存的第一个元素的首地址
对你定义的int* scores指针的影响很明确:
你刚定义int* scores的时候,这个指针是没有指向合法可读写内存的「野指针」,不能直接读写。执行scores = new int[3]之后,这个指针就绑定了刚才申请到的3个int的连续内存起始地址,你就可以像用普通数组一样用scores[0]、scores[1]、scores[2]来读写这三个位置的内容,和普通静态数组int scores[3]的访问方式完全一致。
补充说明
你的代码逻辑是对的,只有一行小疏漏:循环里的"Enter score: ";前面少了cout << ,不然不会弹出提示文字。另外注意new[]申请的动态数组,释放的时候必须用配套的delete[],你代码里的delete[] scores;写法是完全正确的,能把申请的3个int的内存全部释放,不会出现内存泄漏。
内容的提问来源于stack exchange,提问作者user15634014
相关产品推荐
相关产品推荐

