
c++中NEW运算符使用的一般格式为new 类型[初值]。用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
1、newint:开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)。
2、newint(100):开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址。
3、newchar[10]:开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址。
5、newint[5][4]:开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址。
6、float*p=newfloat(3.14159):开辟一个存放单精度数的空间,并指定该实数的初值为3.14159,将返回的该空间的地址赋给指针变量p。
扩展资料:
通过NEW运算符生成对象时,缓冲区会提前分配,可以使用堆的空间,也可以使用栈的空间。一旦这个对象使用完毕,就必须显式的调用类的析构函数进行销毁对象。但此时内存空间不会被释放,以便其他的对象的构造。
因此,如果缓冲区在堆中,那么调用delete[] buf进行内存的释放;如果在栈中,那么在其作用域内有效,跳出作用域,内存自动释放。
代码如下:
import java.util.Arrayspublic class CharTest {
// 请将'A','B','C'存入数组,然后再输出
public void charArray() {
// 定义数组
char[] cs = new char[3]
// 添加元素
cs[0] = 'A'
cs[1] = 'B'
cs[2] = 'C'
// 遍历数组打印内容
for (int i = 0 i < cs.length i++) {
System.out.print(cs[i] + " ")
}
System.out.println()
}
// 请将”我” “爱” “你”存入数组,然后正着和反着输出
public void charArraySort() {
// 定义数组
char[] cs = new char[3]
// 添加元素
cs[0] = '我'
cs[1] = '爱'
cs[2] = '你'
// 遍历数组打印内容
for (int i = 0 i < cs.length i++) {
System.out.print(cs[i] + " ")
}
System.out.println()
// 升序排序
Arrays.sort(cs)
// 遍历数组打印内容
for (int i = 0 i < cs.length i++) {
System.out.print(cs[i] + " ")
}
}
// 测试
public static void main(String[] args) {
CharTest ct = new CharTest()
ct.charArray()
ct.charArraySort()
}
}
运行结果:
直接向指针里面追加数据是肯定不行的,你连编译都通不过。因为你定义了一个指针变量而指针变量没有指向一个固定的内存空间,如果你直接 *** 作指针是不安全的,因为指针可能指向重要的数据,如果数据破坏后果可能很严重编译器当然不允许这样的情况发生。如果你是想向字符串后面追加数据的话,建议你先将字符串放到一个字符数组里面去,然后可以用指针来 *** 作了。比如:char a[20]="Hello world!"char *pp=afor(p<a+20p++){ *p=...}这是一种方法,还有一种方法就是一楼所说的strcat(a,b),a要是一个足够大的字符数组,因为这个函数将字符串追加之后结果是放在a里面的,如果空间不够那就会丢失数据了。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)