24小时热门版块排行榜    

CyRhmU.jpeg
查看: 426  |  回复: 2

SYF0924

木虫 (小有名气)

[求助] 求问简单程序

CODE:
#include<iostream>
#include<array>
using namespace std;
int main()
{
        array<int, 5> *a;
        (*a)[0] = 5;
        cout << (*a)[0];
        cin.get();
        cin.get();
        system("pause");
        return 0;
}

这段程序显示使用了未初始化的局部变量a,不知道这是为什么?
还有要是给(*a)[1]赋值的时候用*(a+1)可以吗???
求大神指点小白!!!

[ Last edited by jjdg on 2017-10-22 at 22:34 ]
回复此楼
随便啦~
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Hzzq

铜虫 (小有名气)


jjdg: 金币+1, 感谢参与 2017-10-22 22:34:22
array<int,5> *a;表示a是一个指针,指向的类型是array<int,5>,但是你没有给这个指针初始化,就是a没有指向任何对象,所以(*a)[0]时就会报错;   如果是数组的话(*a)[1]赋值的时候用*(a+1)可以,因为数组的元素在内存上是顺序存储的!

发自小木虫IOS客户端

» 本帖已获得的红花(最新10朵)

2楼2017-10-21 22:33:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

SYF0924

木虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by Hzzq at 2017-10-21 22:33:59
array&lt;int,5&gt; *a;表示a是一个指针,指向的类型是array&lt;int,5&gt;,但是你没有给这个指针初始化,就是a没有指向任何对象,所以(*a)时就会报错;   如果是数组的话(*a)赋值的时候用*(a+1)可以 ...

多谢多谢
随便啦~
3楼2017-10-22 13:48:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 SYF0924 的主题更新
信息提示
请填处理意见