读书人

使用指针 必须先new吗?不new能用吗?

发布时间: 2012-04-23 13:17:38 作者: rapoo

使用指针 必须先new吗?不new能用吗?
1.我知道NEW指针是在预先不知道指针指向内存的大小,运行时临时开辟的空间
(但是我很少碰到过需要这种需要临时决定内存大小的问题)
2.指针new与不new在使用上到底有何不同?如何区分使用情况?
3.通常情况下,一个指针所指向大小都是固定的,这个我就搞不懂了,这时还需要NEW吗?
4.如果我有一个类,使用他也必须先NEW吗?
5.类指针在什么情况下该NEW,什么情况下不用NEW?请举例说明!

如果不new也能用,为什么还要NEW了?
例如

C/C++ code
int a;int *p;p = &a;p->a;//这样就可以直接使用了?是不是指针在多数情况下不用NEW呢?


[解决办法]
指针是用来指向对像的。

用new分配空间,就是给指针指向一个内存。。

p = &a; 也指向了内存

[解决办法]
new跟指针没有关系。

new是在堆上分配内存,作用域由开发人员确定。
不new是在栈上分配内存(全局变量、静态变量除外),作用域由变量作用域确定。

ps:指针访问前,必须指向一段有效的内存,不管是堆的还是栈的。比如你上面的代码就是指向栈的内存。
[解决办法]
new申请堆空间。
指针, 指向 一块有效的内存空间就能使用。

[解决办法]
指针跟new没关系,你只要给指针指向一个有效的地址,指针就能正常使用了
[解决办法]
new的是对象而不是指针,new是为对象分配空间,指针只是其返回值,能不new当然不 new了.应为new了要自己delete
[解决办法]
p=&a,指向的内存已经定义过了,所以不需要new,但是你要是指向一个没有定义的内存,就需要new了~~
比如链表,当你p->next的时候,因为下一个内存还没有创建,所以必须先new,或者malloc申请内存,才可以使用~~
[解决办法]
探讨

new跟指针没有关系。

new是在堆上分配内存,作用域由开发人员确定。
不new是在栈上分配内存(全局变量、静态变量除外),作用域由变量作用域确定。

ps:指针访问前,必须指向一段有效的内存,不管是堆的还是栈的。比如你上面的代码就是指向栈的内存。

[解决办法]
探讨
引用:

new跟指针没有关系。

new是在堆上分配内存,作用域由开发人员确定。
不new是在栈上分配内存(全局变量、静态变量除外),作用域由变量作用域确定。

ps:指针访问前,必须指向一段有效的内存,不管是堆的还是栈的。比如你上面的代码就是指向栈的内存。
++
指针就相当于牵牛的绳子,关键是看绳子绑哪头牛,而不关心你的牛是怎么来的

读书人网 >C++

热点推荐