两数之和
函数功能是给定一个数组如和一个目标值target,如9,要求返回(数组元素4+5=9)我用了两种方式,但是为什么第一种定义数组返回时会报错:load of null pointer of type 'const int'
第一份代码中,函数内部定义的数组变量,是一个局部变量,函数调用结束的时候,会被抛弃,对应的地址空间会被回收掉,虽然我们通过返回值,得到了一个指向原本数组地址的指针,但是该地址对应的内容已经失去了。
第二份代码中,通过new运算符创建的数组,为它分配的地址空间,不会在函数结束的时候释放掉,而是当进行delete操作的时候,它才会被释放掉。
所以第二份代码能正常运行 首先你创建的是一个指针函数 int * two(),所以时间在在物理存储上应该是没有实际位置,额然后你有创建了一个具有实际地址的 int a,这会就会出现,计算机不知道将a怎么使用然后放在那儿?
再看第二种还是一样指针函数 int * two(),但是这回你创建的 int *p = (int*)malloca(2*sizeof(int)) 就是跟函数相当于一个性质,都是没有实际物理存储地址的数组,所以当我函数被消灭掉的时候,数组也会跟着函数变化,而第一种则是,函数如果被释放掉了,我数组还在,这样就会报错!
页:
[1]