1、没给p赋值,为什么这个程序能输出p的值?
int *p=new int;这里申请了内存,这样p就指向了一个有效的地址。
由于你输出的是p,这个表示地址,所以它会输出地址。
没有给p赋值,表示 p指向的地址中为默认值,如果要输出,需要使用*p来输出内容。
2、我自己用c++编译后运行输出的值为什么和课本例子上的不一样?
由于int *p=new int;申请的地址与编译器、编译环境和时间有关,所以正常来说很难出现一致的情况。
1. int *p=new int; 这一句已经给p赋了一个int类型的数据的地址,所以p是有值的,而 *p 没有赋值,所以是默认的值。
2. 因为每次new int的时候返回的地址都不一定相同,所以输出的值就跟书上的不一样;
1.p指向new int。输出时没有*,所以是取地址。
2.new指令申请动态内存,甚至每次执行都不一样。
p不论怎样,都会被分配内存空间,程序就会按照其内存的内容输出,正是这个原因,其输出内容随机,和课本上不一样,并且你第二次运行程序,应该和第一次运行程序的结果也不一样
没赋值?int *p=new int;这个是干什么的?
系统不通的原因吧。
楼上的几位前辈解释的都很好。 p是一个指针,代表一个内存地址。在没有赋值之前,它的值是随机的,也就是指向了一个不确定的数。这也就解释了能够输出p的值(地址),而每次输入的结果可能都不相同(随机的地址指向的int数)。