问题描述
- new动态分配内存啊啊啊啊啊啊
-
请问各位大神:
char *p = new char[20];对于下面两条语句
strcpy(p, "helloworld");和p ="helloworld");有什么不同吗?我在vs上执行第一条语句是正常的,执行第二条会发出叮的警告声,why?
解决方案
只是发出警告,并不是错误。
其实也很容易理解:你在声明p的时候申请了一个char型数组,此时p指针已经初始化,获得了地址空间。
然而,在p = "helloworld"这一条语句中,又要强行改变p指向的地址(即系统自动为helloworld分配的内存空间首地址),当然会警告啦~
解决方案二:
坑定不同啊,p是指针啊亲,是存放地址的,"helloworld"是字符串常量!
解决方案三:
动态分配内存之new
?
首先:为什么需要动态定义数组呢?
??这是因为,很多情况下,在预编译过程阶段,数组的长度是不能预先知道的,必须在程序运行时动态的给出
??但是问题是,c++要求定义数组时,必须明确给定数组的大小,要不然编译通不过?
?
??如: int Array[5];正确
???????int i=5;
???????int Array[i]; 错误 因为......
答案就在这里:动态分配内存之new
时间: 2025-01-19 15:54:17