
指针数组的动态分配问题
inti=1;int**p=newint*[3];//int*q=newint[3];//两个语句在内存分配中怎么解释,有什么区别?特别是指针数组动态分配p[0]=&i;...
int i=1;
int **p=new int*[3]; //
int *q=new int[3]; // 两个语句在内存分配中怎么解释,有什么区别?特别是指针数组动态分配
p[0]=&i;
q[0]=i;
cout<<p[0]; // 输出i的地址
cout<<q[0]; // 输出i
说说我的理解,你看对不
int* q = new int[3]; 开辟一块连续的内存空间,空间大小是12字节,容纳3个int型数据,然后返回这块内存空间的起始地址给q,q指向这个起始地址,q[0]==*(q+0),q[1]==*(q+1),是个int型数据
int **p=new int*[3]; 开辟一块连续的内存空间,空间大小是多少来着?,容纳3个int*(即指针)型数据,然后返回这块内存空间的起始地址给p,因为这个地址是指针的地址,所以p的类型应该是int **.
p[0]是int *型,*p[0]才是int 型..对否? 展开
int **p=new int*[3]; //
int *q=new int[3]; // 两个语句在内存分配中怎么解释,有什么区别?特别是指针数组动态分配
p[0]=&i;
q[0]=i;
cout<<p[0]; // 输出i的地址
cout<<q[0]; // 输出i
说说我的理解,你看对不
int* q = new int[3]; 开辟一块连续的内存空间,空间大小是12字节,容纳3个int型数据,然后返回这块内存空间的起始地址给q,q指向这个起始地址,q[0]==*(q+0),q[1]==*(q+1),是个int型数据
int **p=new int*[3]; 开辟一块连续的内存空间,空间大小是多少来着?,容纳3个int*(即指针)型数据,然后返回这块内存空间的起始地址给p,因为这个地址是指针的地址,所以p的类型应该是int **.
p[0]是int *型,*p[0]才是int 型..对否? 展开
展开全部
其实这个很简单,你把int*合起来看,比如
typedef int* IntPtr;
然后以上代码就变成
IntPtr* p = new IntPtr[3];
int* q = new int[3];
p[0] = &i;
q[0] = i;
cout << p[0];
cout << q[0];
typedef int* IntPtr;
然后以上代码就变成
IntPtr* p = new IntPtr[3];
int* q = new int[3];
p[0] = &i;
q[0] = i;
cout << p[0];
cout << q[0];
更多追问追答
追问
额 能说下上面的内存是怎样分配的吗?
追答
其实都一样
上面就是给你分配至少能容纳3个IntPtr的空间
下面就是给你分配至少能容纳3个int的空间
指针说到底也就是变量
在这个层面上和普通变量是没有区别的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询