C++空间分配

来源:百度知道 编辑:UC知道 时间:2024/09/24 18:25:18
#include <iostream.h>
#include <string.h>
void main()

{
char *p,*q;
p =(char*) new char (sizeof(char) * 20);
q= p;
cin>>q;
cout<<q;

}
解释一下为什么这个q的空间能分配成功

指针分配的是动态内存区的,动态内存区有一特点,就是没有名字,只能通过指针指向这一内存区.

你分配的P指向了这一内存区,然后q=p,导致q也指向这一内存区.

只分配出一块空间,而两个指针指向这一块.

char *定义指针,你已用p指向了一个new 操作符创建的单元,q指向p所指向的单元,而不是又分配了一个新的空间给q。