注册 登录
编程论坛 C++教室

一个C++ 指针和new的问题

暂未命名 发布于 2014-01-11 16:15, 600 次点击
#include <iostream>
using namespace std;

int main()
{
    int *p,*q;
    p = new int[10000];
    q = &p[0];
    for(int i = 0; i<10000; i++)
        *(q++) = 0;
    q = &p[1];
    *q = 178;
    p = new int[10000];
    cout<<p[1]<<endl;
}

p是一个指针为什么可以用p[1]来访问new开辟地址空间,不应该是只能用p++的吗?
还有p[1]是什么情况?指针还可以这样用?原来还真没见过...

基础不好还请轻喷...
4 回复
#2
yuccn2014-01-11 16:19
p是一个指针为什么可以用p[1]来访问new开辟地址空间?你是指q = &p[1]; 这个吗?这个并没有开辟空间,只是把q指向了p+1的那块内存而已。好好补下基础
#3
暂未命名2014-01-11 16:35
回复 2楼 yuccn
那上面的cout<<p[1]是怎么回事?
p[1]等于p+1吗?

[ 本帖最后由 暂未命名 于 2014-1-11 20:05 编辑 ]
#4
zklhp2014-01-14 12:34
p[i] 和 *(p+i)是绝对相等的 p[i]就这么定义的

多说一句 见到 i[p] 也别惊慌 因为根据定义它和p[i]是一样的。。。


#5
zklhp2014-01-14 12:34
建议楼主多看书。。。
1