C++中,仅仅有int*p=new int;而没给p赋值,为什么这个程序能输出p的值?

2025-01-06 19:45:42
推荐回答(6个)
回答1:

1、没给p赋值,为什么这个程序能输出p的值?

int *p=new int;这里申请了内存,这样p就指向了一个有效的地址。
由于你输出的是p,这个表示地址,所以它会输出地址。
没有给p赋值,表示 p指向的地址中为默认值,如果要输出,需要使用*p来输出内容。

2、我自己用c++编译后运行输出的值为什么和课本例子上的不一样?

由于int *p=new int;申请的地址与编译器、编译环境和时间有关,所以正常来说很难出现一致的情况。

回答2:

1. int *p=new int; 这一句已经给p赋了一个int类型的数据的地址,所以p是有值的,而 *p 没有赋值,所以是默认的值。

2. 因为每次new int的时候返回的地址都不一定相同,所以输出的值就跟书上的不一样;

回答3:

1.p指向new int。输出时没有*,所以是取地址。
2.new指令申请动态内存,甚至每次执行都不一样。

回答4:

p不论怎样,都会被分配内存空间,程序就会按照其内存的内容输出,正是这个原因,其输出内容随机,和课本上不一样,并且你第二次运行程序,应该和第一次运行程序的结果也不一样

回答5:

没赋值?int *p=new int;这个是干什么的?
系统不通的原因吧。

回答6:

楼上的几位前辈解释的都很好。 p是一个指针,代表一个内存地址。在没有赋值之前,它的值是随机的,也就是指向了一个不确定的数。这也就解释了能够输出p的值(地址),而每次输入的结果可能都不相同(随机的地址指向的int数)。