c++ - 这是初始化指针的正确方法吗?

标签 c++ pointers memory

这是使用写入指针的函数的正确方法吗?在调用函数之前是否必须为 double* 分配内存?

double *myDouble;
write_to_pointer( myDouble );

最佳答案

你的意思是它写入指针本身,还是写入它指向的内存?

如果是第一个,则通过引用获取指针,例如:

void write_to_pointer(double *& p) {
    p = whatever;
}

那么它是正确的,尽管相当困惑。最好把值作为返回值返回,这样赋值更明显:

double *get_pointer() {return whatever;}
double *myDouble = get_pointer();

如果是第二个,则否:指针不指向任何东西,因此尝试取消引用它会产生未定义的行为(通常会崩溃或损坏其他一些程序内存)。它将需要指向一个有效的 double(或者一个足够大的 double 数组,如果这是函数所期望的)。

关于c++ - 这是初始化指针的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24134790/

相关文章:

c++ - fstream::read 的结果不一致

c++ - 为什么名称修改没有破坏我的程序?

python - R、Python、rpy2 : "Error: cannot allocate vector of size xxx Mb"

c - 如何在指针内部分配内存?

c++ - 如何使用 lower_bound 将值插入排序 vector

c++ - boost asio 在线程中运行 io_service

c++ - 将 double* 从 c++ dll 返回到 delphi 程序

c - 用于使用指向结构的指针循环结构成员

c++ - 使用算术符号来遍历字符串

java - 哪些 JVM 选项优先?